声明 IBAction 函数时下划线的作用是什么?
What is the purpose of under score in when declaring a IBAction func?
初学者问题,我意识到当Xcode为@IBAction声明一个函数时,它声明如下:
@IBAction func hardnessSelected(_ sender: UIButton)
,
我读到的是,
Create a function called hardness selected which accepts a parameter
called sender which accepts the type UI button.
据我目前的理解,当你想声明一个你不会改变的变量时使用 _,例如在 for 循环中告诉 swift 这个变量的值对于优化性能无关紧要。
但是,在上面的例子中,变量“sender”还有一个名称,我不明白为什么。
有人可以解释一下吗?
这个地方是为标签声明的,这意味着一旦您调用该函数,它就不会出现在您面前,例如:
func sum (_ number1: Int, _ number2: Int) {
print(number1 + number2)
}
调用该函数后,您无需提及 number1 或 number2,只需直接写入数字即可:
sum(1, 2)
要清楚,它与使用以下函数相同:
func summation(myFirstNumber number1: Int, mySecondNumber number2: Int) {
print (number1 + number2)
}
但这里我没有使用 _,而是使用了一个标签,所以当我调用该函数时,我将使用这些标签:
summation(myFirstNumber: 1, mySecondNumber: 2)
所以现在很清楚_不是写标签。
有关更多信息,请查看:来自 here
的函数参数标签和参数名称
Swift 允许 argumentLabel
与实际 argument
本身不同,以提高可读性。
如果你的函数签名是这样的 -
func value(for key: String)
在本例中,这些值为 argumentLabel == for
和 argument == key
。在呼叫站点,您必须提到 argumentLabel
,如下所示。
value(for: "myCustomKey")
如果你的函数签名是这样的 -
func valueForKey(_ key: String)
在这种情况下,您明确要求编译器允许您在调用此函数时省略 argumentLabel
。请注意,argument == key
将不会在调用站点显示,如下所示。
valueForKey("myCustomKey")
初学者问题,我意识到当Xcode为@IBAction声明一个函数时,它声明如下:
@IBAction func hardnessSelected(_ sender: UIButton)
,
我读到的是,
Create a function called hardness selected which accepts a parameter called sender which accepts the type UI button.
据我目前的理解,当你想声明一个你不会改变的变量时使用 _,例如在 for 循环中告诉 swift 这个变量的值对于优化性能无关紧要。
但是,在上面的例子中,变量“sender”还有一个名称,我不明白为什么。
有人可以解释一下吗?
这个地方是为标签声明的,这意味着一旦您调用该函数,它就不会出现在您面前,例如:
func sum (_ number1: Int, _ number2: Int) {
print(number1 + number2)
}
调用该函数后,您无需提及 number1 或 number2,只需直接写入数字即可:
sum(1, 2)
要清楚,它与使用以下函数相同:
func summation(myFirstNumber number1: Int, mySecondNumber number2: Int) {
print (number1 + number2)
}
但这里我没有使用 _,而是使用了一个标签,所以当我调用该函数时,我将使用这些标签:
summation(myFirstNumber: 1, mySecondNumber: 2)
所以现在很清楚_不是写标签。
有关更多信息,请查看:来自 here
的函数参数标签和参数名称Swift 允许 argumentLabel
与实际 argument
本身不同,以提高可读性。
如果你的函数签名是这样的 -
func value(for key: String)
在本例中,这些值为 argumentLabel == for
和 argument == key
。在呼叫站点,您必须提到 argumentLabel
,如下所示。
value(for: "myCustomKey")
如果你的函数签名是这样的 -
func valueForKey(_ key: String)
在这种情况下,您明确要求编译器允许您在调用此函数时省略 argumentLabel
。请注意,argument == key
将不会在调用站点显示,如下所示。
valueForKey("myCustomKey")