声明 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 == forargument == key。在呼叫站点,您必须提到 argumentLabel,如下所示。

value(for: "myCustomKey")

如果你的函数签名是这样的 -

func valueForKey(_ key: String)

在这种情况下,您明确要求编译器允许您在调用此函数时省略 argumentLabel。请注意,argument == key 将不会在调用站点显示,如下所示。

valueForKey("myCustomKey")