推断类型和动态类型

Ste*_*lla 2 type-inference dynamic-typing

在编程语言中,推断类型和动态类型之间有什么区别?我知道动态类型,但不知道动态类型与推断类型有何不同以及如何?有人可以举例说明吗?

Dai*_*jan 5

  • 推断的类型=设置ONCE并处于编译时间。实际上,推断的部分仅是时间安全,因为如果编译器可以确定类型名称,则不必键入Typename。

    类型推断通常与静态类型结合使用(与swift一样)(http://en.wikipedia.org/wiki/Type_inference

  • 动态类型=无固定类型->类型可以在运行时更改


一个例子:

var i = true; //compiler can infer that i most be of type Bool
i = "asdasdad" //invalid because compiler already inferred i is an int!
Run Code Online (Sandbox Code Playgroud)

它等于

var i: Int = true; //compiler can infer that i most be of type Bool
i = "asdasdad" //invalid because compiler already inferred i is an int!
Run Code Online (Sandbox Code Playgroud)

==>类型推断可以节省您拼写出来的类型(如果编译器可以看到它的话)

但是,如果它是动态的,那么它将起作用(例如,objC)

id i = @YES; //NSNumber
i = @"lalala"; //NSString
i = @[@1] //NSArray
Run Code Online (Sandbox Code Playgroud)