有什么办法可以避免“?”标记在 Swift 中一次又一次展开?
Any way to avoid "?" mark to unwrap again and again in Swift?
我们使用“?”将变量定义为可选,例如:
var name : String?
然后在整个程序中我们使用“?”获取变量名值,例如:
print (name?)
有什么方法可以去掉“?”每次展开可选变量时。
您应该使用 if let
和 guard let
.
解包可选
你需要使用conditional binding来避免它。
例如:
var name : String?
name = "Hello world"
if let unwrappedName = name as? String
{
// Now unwrappedName isn't optional
}
基本上,unwrappedName 将是字符串 AKA 不是可选的。
但这实际上完全取决于您要实现的目标,如果您确定 name
永远不会为零,我建议使用隐式展开:
var name : String!
但是使用隐式解包建议名称可能为 nil,因此需要再次检查条件绑定 - 这完全取决于您是否确定变量永远不会为 nil。
使用隐式解包选项来避免使用 ?每次都要确保您的变量在使用它时必须具有价值
let someString:String!;
当你获得 someString 的值时
someString = "this is the string"
并在不带“?”的情况下访问 someString
我们使用“?”将变量定义为可选,例如:
var name : String?
然后在整个程序中我们使用“?”获取变量名值,例如:
print (name?)
有什么方法可以去掉“?”每次展开可选变量时。
您应该使用 if let
和 guard let
.
你需要使用conditional binding来避免它。
例如:
var name : String?
name = "Hello world"
if let unwrappedName = name as? String
{
// Now unwrappedName isn't optional
}
基本上,unwrappedName 将是字符串 AKA 不是可选的。
但这实际上完全取决于您要实现的目标,如果您确定 name
永远不会为零,我建议使用隐式展开:
var name : String!
但是使用隐式解包建议名称可能为 nil,因此需要再次检查条件绑定 - 这完全取决于您是否确定变量永远不会为 nil。
使用隐式解包选项来避免使用 ?每次都要确保您的变量在使用它时必须具有价值
let someString:String!;
当你获得 someString 的值时
someString = "this is the string"
并在不带“?”的情况下访问 someString