我知道这不是一件好事,但我非常好奇这是如何运作的。
我可以创建这样的函数并调用它,但我没有看到如何引用参数
func printMultipleOf_v2(_ : Int, _ : Int) {
//how to reference parameters?
}
printMultipleOf_v2(2, 4)
答案 0 :(得分:2)
参数称为“忽略参数”,不应引用。有关使用忽略参数的原因,请参阅this answer。
从https://medium.com/swift-programming/facets-of-swift-part-4-functions-3cce9d9bba4开始,“一个被忽略的参数让我们不必为我们不使用的参数找到一个名称,就像我们覆盖一个方法并且不使用给定的参数或者实现一个闭包,不要使用给定的参数。“
答案 1 :(得分:1)
如果您打算使用这些参数,只需指定_
的参数标签,然后指定实际参数名称:
func printMultiple(_ x: Int, _ y: Int) {
// now use x and y
}
因此,虽然您仍然可以在函数内引用x
和y
(或其他),但调用点不需要任何标签:
printMultiple(2, 4)
答案 2 :(得分:0)
非常有趣且具有挑战性! 但是,看看Swift 4语法(Swift编程语言(Swift 4)),不应该授权:
parameter → external-parameter-nameoptlocal-parameter-nametype-annotation
parameter → external-parameter-nameoptlocal-parameter-nametype-annotation...
external-parameter-name → identifier
local-parameter-name → identifier
其中identifier必须具有此处定义的identifier_head
identifier → identifier-headidentifier-charactersopt
identifier → `identifier-headidentifier-charactersopt`
identifier → implicit-parameter-name
identifier-list → identifier identifier,identifier-list
identifier-head → Upper- or lowercase letter A through Z
identifier-head → _
identifier-head → U+00A8, U+00AA, U+00AD, U+00AF, U+00B2–U+00B5, or U+00B7–U+00BA
identifier-head → U+00BC–U+00BE, U+00C0–U+00D6, U+00D8–U+00F6, or U+00F8–U+00FF
identifier-head → U+0100–U+02FF, U+0370–U+167F, U+1681–U+180D, or U+180F–U+1DBF
identifier-head → U+1E00–U+1FFF
因此,在这种情况下,您根本无法引用参数:_不是外部名称,而是内部名称。
答案 3 :(得分:0)
答案是,你不能。通过声明这样的参数,您明确告诉编译器忽略它们。如果您需要引用它们,请给它们一个内部名称:
func printMultipleOf_v2(_ lhs: Int, _ rhs: Int) {
//how to reference parameters?
print(lhs, rhs)
}
所以这是"不要这样做。"