我是在想.据我了解,var并且let可以是任何东西,并Swift自动进行正确的类型像JavaScript.但是当我尝试在类中设置属性时,当我没有指定类型时,我会收到错误.
var value1, value2 // Error: missing annotations
Run Code Online (Sandbox Code Playgroud)
好吧,我已经阅读了一些引用,变量需要声明类型var foo = 0.但在我的课堂上,我有一个init()将变量设置为我在创建类对象时输入的内容.
那我该怎么做呢?它甚至可能吗?
我看到了这种类型,typealias但也没用.
Pau*_*w11 10
虽然Swift和Javascript都允许您在不定义类型的情况下为变量分配常量,但这两种语言存在根本区别.Swift是一种强类型,类型安全的语言,而Javascript则不是.来自Swift编程语言 -
"Swift是一种类型安全的语言.类型安全语言鼓励您清楚代码可以使用的值的类型.如果你的部分代码需要一个String,你就不能错误地将它传递给Int."
摘录自:Apple Inc."The Swift Programming Language."iBooks. https://itunes.apple.com/au/book/swift-programming-language/id881256329?mt=11
所以当你说
var welcomeMessage = "Hello"
Run Code Online (Sandbox Code Playgroud)
Swift推断您希望welcomeMessage成为字符串并相应地设置其类型.随后尝试
welcomeMessage=3
Run Code Online (Sandbox Code Playgroud)
将指定运行编译时错误,因为您指定的类型不正确.
如果您没有分配初始值,那么Swift无法推断出类型,您必须指定它.
另一方面,Javascript非常乐意接受
var welcomeMessage="Hello"
welcomeMessage=3
Run Code Online (Sandbox Code Playgroud)
因为它不是类型安全的,只是尝试用它拥有的值尽力而为.例如,如果在为welcomeMessage分配3之后对welcomeMessage执行字符串操作,则Javascript会将该值转换为"3",然后执行该操作.
虽然Javascript有类型安全扩展,但它不像Swift那样是语言的基本组成部分
仅在最初指定默认值时才会推断类型.从语言参考中的示例,声明类型:
var welcomeMessage: String
Run Code Online (Sandbox Code Playgroud)
或者指定一个允许Swift推断类型的初始值:
welcomeMessage = "Hello"
Run Code Online (Sandbox Code Playgroud)
在上面的welcomeMessage示例中,没有提供初始值,因此welcomeMessage变量的类型使用类型注释指定,而不是从初始值推断.
| 归档时间: |
|
| 查看次数: |
3424 次 |
| 最近记录: |