看一个Swift 示例:
if let sourceViewController = sender.sourceViewController as? MealViewController, meal = sourceViewController.meal {
...
}
Run Code Online (Sandbox Code Playgroud)
该文件指出:
...代码将视图控制器分配给本地常量sourceViewController,并检查sourceViewController上的meal属性是否为nil.
问题:当用逗号分隔时,Swift是否允许你在if语句中有多个条件(如本例中的逗号后面所示MealViewController)?
在文档中没有看到这个.
我最近遇到过这种情况,使用if/let并了解它的功能归功于这篇文章.据我了解,在执行进程块之前需要满足这两个条件.我现在已经到了我在常规条件语句中看到它的地步:
if existingTextHasDecimalSeparator != nil, replacementTextHasDecimalSeparator != nil {
return false
} else {
return true
}
Run Code Online (Sandbox Code Playgroud)
完成上述操作与简单使用之间有什么区别&&?
if existingTextHasDecimalSeparator != nil && replacementTextHasDecimalSeparator != nil {
return false
} else {
return true
}
Run Code Online (Sandbox Code Playgroud) 我正在学习 Swift 教程,有一次,在逗号,分隔两个条件的情况下评估 if条件。这和AND操作员一样吗?如:
var a = 3
var b = 6
var c = 9
var d = 15
if a < b && d > c {
print("yes")
}
if a < b, d > c {
print("yes")
}
Run Code Online (Sandbox Code Playgroud)
两种情况都返回yes。
请看下面的代码:
class A {
let a: String
let b: String
init(a: String, b: String) {
self.a = a
self.b = b
}
}
class B: A {
let c: Bool
private let aExpectedValue = "a"
private let bExpectedValue = "b"
override init(a: String, b: String) {
c = (a == aExpectedValue && b == bExpectedValue)
super.init(a: a, b: b)
}
}
Run Code Online (Sandbox Code Playgroud)
这会导致以下错误B.init:
但是,如果我将其更改为c = (a == aExpectedValue)或c = (b == bExpectedValue)然后正确编译。
有人知道为什么吗?