以下代码是正确的:
func intTest() -> Int? {
var res : Int
res = 5
return res
}
将非可选的 Int
从返回类型为可选的 Int
的方法中返回是没有问题的。
现在让我们看看当返回值是一组可选值的元组时会发生什么:
func tupleTest() -> (Int?, Int?) {
var res : (Int, Int)
res = (5, 5)
return res
}
return res
这一行代码导致错误:
错误: 无法将元组转换 '(Int, Int)' 为 '(Int?, Int?)' (又名 '(Optional, Optional)')
为什么Swift不允许这样做?
我当然理解为什么在另一个方向上(从可选到非可选)会出现错误,但是为什么在元组中不能用非可选值代替可选值,而非元组可以正常工作呢?
我看过Swift元组到可选类型的赋值,但它并没有涉及为什么不能进行赋值,只是解决了如何解决这个问题。