我已经构建了一个小型编译器,用于静态类型的语言。在了解静态语言如何工作之后,我很难将自己的头脑变成像Groovy这样的动态语言。Groovy如何以动态方式工作?
在构建我的编译器时,我知道一旦生成机器级代码,就无法更改它! (即其run-time
)。
但这是如何做到的Groovy这个神奇的东西一样一样的语句推断类型:
def a = "string"
a.size()
就我而言,常规必须找到类型a
是string
运行线a.size()
之前。它似乎是在编译时(在构建AST时)这样做的!但是这种语言被称为动态的。
我很困惑,请帮我弄清楚。
谢谢。
输入推理!=动态输入 –
也许这个网页将帮助:http://groovy.codehaus.org/Runtime+vs+Compile+time,+Static+vs+Dynamic。基本上groovy可以在静态和动态类型之间切换。 – Alex