Ste*_*lla 2 type-inference dynamic-typing
在编程语言中,推断类型和动态类型之间有什么区别?我知道动态类型,但不知道动态类型与推断类型有何不同以及如何?有人可以举例说明吗?
推断的类型=设置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)