当我在视图中创建标签(从Object库中拖动)并使IBOutlet连接标签和viewController(Ctrl和拖动)时,Xcode生成的默认代码是,例如,@IBOutlet weak var displayColumn: UILabel!
我可以删除感叹号并将其设置为UILable唯一.但是必须有一个很好的理由Xcode希望它是一个强制解包的可选类型.
问题:我认为我不明白在这里使用可选类型的原因.因为我已经在我的视图中创建了一个标签并将其连接到我的控制器,所以它确实存在,它存在,我创建它.为什么Xcode想要一个选项作为默认类型?如果它说标签内的文字是一个选项,那对我来说听起来很合理,因为标签在运行时的某个时刻可能是空的.
非常感谢
我仍然对范围感到困惑,我认为变量只能在其范围内访问,这就是我通常所理解的
class Car {
let manufacturer: String
private(set) var color: String
init() {
manufacturer = "Ford"
color = "Black"
}
func changeColor(color: String){
self.color = color
}
}
var carOfTim = Car()
carOfTim.changeColor("Red") // only "changeColor" fun can update the color
print(carOfTim.color)
//why I can do this?
carOfTim.color = "Green"
print(carOfTim.color) // it prints the "Green"!
Run Code Online (Sandbox Code Playgroud)
问题:我认为私有变量color只能由changeColor函数访问,因为它changeColor具有相同的范围color.但carOfTim.color = "Green"仍然可以更新颜色变量,为什么?
猜猜:因为我使用了Xcode游乐场,所有内容都被输入到相同的普通"终端"中,因此如果我将Car类放入不同的文件夹中,它们可能都具有相同的范围,carOfTim.color = "Green" 可能不再有效.
如果我错了,请纠正我.非常感谢您的时间和帮助.
我正在初步构建计算器。目前,该代码只是在用户点击计算器时将数字和 Pi 打印到计算器的标签中。
\n\n1) 车码
\n\nimport UIKit\n\nclass ViewController: UIViewController {\n\n @IBOutlet weak var display: UILabel! = nil //Look Here "(\n\n var userIsInTheMiddleOfTypeing = false\n\n @IBAction func touchDigit(_ sender: UIButton){\n let digit = sender.currentTitle!\n if userIsInTheMiddleOfTypeing {\n let textCurrentlyInDisplay = display.text!\n display.text = textCurrentlyInDisplay + digit\n } else {\n display.text = digit\n }\n\n userIsInTheMiddleOfTypeing = true\n }\n\n @IBAction func performOperation(_ sender: UIButton) {\n userIsInTheMiddleOfTypeing = false\n if let methematicalSymbol = sender.currentTitle {\n if methematicalSymbol == "\xcf\x80" {\n display.text = …Run Code Online (Sandbox Code Playgroud) def found( names(String, String) ): Unit {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
找到的函数的参数列表是一个字符串元组(string,string)
如何将第二个元组元素的默认值设置为第一个元组元素的默认值,names(String, String=names._1)或者甚至允许这样做?如果是这样,我该如何传递论点?found( ("FirstName", ???) )要么found("FirstName")