这只是一个例子来说明我想要实现的目标.
我想检查一个可选项是否包含一个值,如果它是否大于0.我现在有这样的方式:
if let value = Double(textFieldText) {
if value > 0 {
return true
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在一条线上实现这一目标?就像是:
if let value = Double(textFieldText) && value > 0{
return true
}
Run Code Online (Sandbox Code Playgroud)
你可以使用where
条款:
if let value = Double(textFieldText) where value > 0 {
Run Code Online (Sandbox Code Playgroud)
使用nil合并运算符的另一个选项:
if Double(textFieldText) ?? -Double.infinity > 0 {
Run Code Online (Sandbox Code Playgroud)
感谢下面的评论,这些评论帮助我意识到nil > 0
不会抛出错误:
if Double(textFieldText) > 0 {
Run Code Online (Sandbox Code Playgroud)
是迄今为止最简单的选择.
我认为编写逻辑的最简单方法就是这样
return Double(textFieldText) > 0
Run Code Online (Sandbox Code Playgroud)
func foo(textFieldText:String) -> Bool {
return Double(textFieldText) > 0
}
foo("1") // true
foo("-1") // false
foo("a") // false
foo("0") // false
foo("123a") // false
Run Code Online (Sandbox Code Playgroud)
当在Swift中比较2个值并且(确切地)其中一个是nil
,则nil
总是小于另一个值.
因此每次初始化Double
确实失败时,就像这里一样
return Double("a") > 0
Run Code Online (Sandbox Code Playgroud)
表达成为
return nil > 0
Run Code Online (Sandbox Code Playgroud)
是的false
.
表达式返回的唯一方法true
是将输入字符串解析为Double
实际大于该值的值0
.这正是你寻找的逻辑:)
归档时间: |
|
查看次数: |
1162 次 |
最近记录: |