所以我有这个简单的代码,并有快速数据类型的问题,想要映射这个数组
["a", "b", nil, "c", "d", nil]
Run Code Online (Sandbox Code Playgroud)
至
["a", "b", "z", "c", "d", "z"]
Run Code Online (Sandbox Code Playgroud)
所以,这是我目前的代码
import Foundation
let array1 = ["a", "b", nil, "c", "d", nil]
let newArray = array1.map { (currentIndex: Any) -> String in
if currentIndex == nil {
return "z"
}
return currentIndex as! String
}
print(newArray)
Run Code Online (Sandbox Code Playgroud)
如果您尝试解决代码,我将不胜感激.谢谢.
Mar*_*n R 11
如果你声明currentIndex
为Any
那么你就不能再将它与之比较nil
了.你的案例中的正确类型是String?
:
let newArray = array1.map { (currentIndex: String?) -> String in
if currentIndex == nil {
return "z"
}
return currentIndex!
}
Run Code Online (Sandbox Code Playgroud)
但是,编译器可以从上下文中自动推断:
let newArray = array1.map { currentIndex -> String in
if currentIndex == nil {
return "z"
}
return currentIndex!
}
Run Code Online (Sandbox Code Playgroud)
更好地使用零合并操作符??
,并避免强制解包:
let newArray = array1.map { currentIndex in
currentIndex ?? "z"
}
Run Code Online (Sandbox Code Playgroud)
或更短:
let newArray = array1.map { $0 ?? "z" }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
106 次 |
最近记录: |