在编程语言中,推断类型和动态类型之间有什么区别?我知道动态类型但不知道动态类型与推断类型有何不同以及如何?有人可以用一些例子提供解释吗?
答案 0 :(得分:4)
推断类型=设置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!
等于
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!
==>如果编译器可以看到类型推断,则可以省去拼写类型
但是如果它是动态的(例如objC)
id i = @YES; //NSNumber
i = @"lalala"; //NSString
i = @[@1] //NSArray
答案 1 :(得分:0)
您可以动态更改数据类型以进行动态输入,但推断输入在使用前不需要显式数据类型声明。
答案 2 :(得分:0)
静态和动态类型告诉您何时检查变量的类型。 静态类型检查会在编译期间检查类型。动态类型检查会在运行时(即时)检查类型
Inferred和Manifest涉及是否必须指定变量的类型。推断意味着该语言将为您检测到它。清单意味着必须指定类型。