- 关于不同数据类型之间的比较
//执行以下代码则会直接报错
let a = 5
let b: Float = 8
if a < b
{
print("succeed")
}
swift:4:6: error: binary operator '<' cannot be applied to operands of type 'Int' and 'Float'
因为在初始化的时候,a
的初始值为5
,虽然未显式的指定Int
类型,但由于初始化的数据类型为Int
,因此a
的数据类型可推断为Int
。而b
的数据类型被显式的指定为Float
,虽然初始值写做 8
,但其类型被强制转换。因此不同类型之间无法进行比较。
- 关于
if
表达式
// 输出结果: "hello, 22453"
var name: String? = "22453"
var greeting = "hello"
if let n = name
{
greeting = "hello, \(n)"
}else
{
greeting = "hello, another option"
}
print(greeting)
注意if
的表达式,if let n=name
。在我的理解里,他应该等价于先判断name
是否为nil
,如果不是nil则执行let n = name
。
如果将代码直接写成先赋值let n = name
,之后执行判断语句if n {}
,然后开始报错:
swift:15:4: error: optional type 'String?' cannot be used as a boolean; test for '!= nil' instead if n ^ ( != nil)
按照提示,判断语句后面需要补充的是一个布尔表达式即if n != nil
,而 n
并不满足语法条件,因此报错。
网友评论