也说Type Inference

来源:转载

看了Cavingdeep兄的Post,还有idior老大的comment,我又忍不住想说上两句了,因为Boo总能让我想起可爱的Python,还有正在茁壮成长的小小IronPython。:)
说到Type Inference,有一个概念是不得不提的,就是Dynamic Type(动态类型)和StaticType(静态类型)。静态语言就不必多说了,C++、Java和C#都是静态语言,它们最大的特点就是变量在使用之前都必须进行类型声明。而Python。VB则是一种动态类型语言,所谓动态,通俗点说就是变量的类型是由最后赋予它的值决定的。怎么决定呢? 就是靠着Type Inference。 例如:

>>> test = "This is string"
>>> type(test)
<type 'str'>

变量str的值是"This is string",所以str的类型是string(就是'str')。虽然动态语言依靠TypeInference,但是并非使用了TypeInference就一定是动态语言。Cavingdeep兄的post中给出的例子不仅仅说明了TypeInference,更说明了Boo与Python之间一个不同的地方:Boo事实上是一种静态语言,虽然它不需要为变量进行变量类型的声明。正如Cavingdeep兄给出的例子:

str = "string"
str = 1
在Boo中会抛出Exception,但是在Python中,这样是没有问题的。
Boo与Python最大的一个不同之处就在于此:Boo拥有静态类型检查。引用Boo语言之父的一句话以说明之:There were some minor things I didn't like and I alsohad to account for the needs of a statically typed language such asexact method signature declarations and such.

PS:再次拜读了Boo语言之父Rodrigo所写的BooManifesto,又一次被他的个性所深深打动。真的忍不住大叫:Wow,太Cool了!<!---->



分享给朋友:
您可能感兴趣的文章:
随机阅读: