varoptionalString:String?="Hello"optionalString==nilvaroptionalName:String?="JohnAppleseed"vargreeting="Hello!"ifletname=optionalName{greeting="Hello,\(name)"}如上代码:?=赋值适用于什么场景
2 回答

蝴蝶不菲
TA贡献1810条经验 获得超4个赞
这个问题这样问说明没理解“可选型”——这不是“?=”赋值,而是定义变量为String?类型,这个类型在没有任何值的时候是nil;而在有值的时候会被表示成some:"xxxx"这样。当你需要操作这个String?型变量的时候,你需要用!把它转成String类型,这时候它的值就是"xxxx"了

德玛西亚99
TA贡献1770条经验 获得超3个赞
据我猜想是这样的:因为Swift其实是门静态类型语言,而变量类型的确定是依赖于变量初值的,如果你需要一个初值为nil的String变量,那么你可能会直接这么写:varoptionalName=nil但这样写就麻烦了,因为这样编译器就没法从nil分析出这变量的类型了,但如果是String(nil)的话,实际上就不一定是返回nil了(而是调用构造器)。所以Swift送给程序员一个:类型?=初值的语法好让程序员们将初值赋为nil并仍保证自身是静态类型。
添加回答
举报
0/150
提交
取消