我有很多这样的代码:
if let x = optbool {
return f(x)
} else {
return false
}
这个能不能在一行内表达?
我有很多这样的代码:
if let x = optbool {
return f(x)
} else {
return false
}
这个能不能在一行内表达?
return optbool.map(f) ?? false
if let x = optbool { return f(x) } else { return false }
;-)
说真的,如果optbool
不应该是nil
,我宁愿把它写成两行:
guard let x = optbool else { return false }
return f(x)
试试这个:
return optbool != nil ? f(optbool!) : false
如果函数 f(x:Bool)->Bool 返回有效,则您的代码才是有效的。
func foo(b: Bool?)-> Bool {
if let x = b {
return f(x)
} else {
return false
}
}
现在这个问题已经没有逻辑了...你可以使用其中之一。
let res1 = f(b ?? false)
let res2 = f(b ?? true)
let res3 = !f(b ?? false)
let res4 = !f(b ?? true)
f
函数定义为Bool
的扩展:extension Bool {
func f() -> Bool {
return true // or false..
}
}
那么你可以写
return x?.f() ?? false
或者
return x?.f() == true