函数的语法错误 -- 缺少参数
syntax error for function-- missing parameter
我正在从苹果书上学习swift。在 xcode 中编写代码时,出现参数缺少表单函数的错误。
根据 Apple 代码应该是
func halfOpenRangeLength(start: Int, end: Int) -> Int {
return end - start
}
调用此函数时:
println(halfOpenRangeLength(1, 10)) // According to Apple.
但是当我在上面输入时,它说插入 end
所以这个语句变成了
println(halfOpenRangeLength(1, end:10))
为什么会这样?
谢谢
改用这个我已经检查过它有效
func halfOpenRangeLength(start: Int, end: Int) -> Int {
return end - start
}
println("\(halfOpenRangeLength(1, 10))")
如果您不希望它需要参数名称,您只需要在它前面添加 _ 就不会再打扰您了:
vv
func halfOpenRangeLength(start: Int, _ end: Int) -> Int {
Swift 总是给第一个参数一个本地参数名,没有外部参数名。这意味着您不需要在使用该方法时调用它。
之后,每个参数都被赋予了本地和外部参数名称。这是为了清楚起见。正如 Leonardo 所说,您可以通过在参数名称前放置下划线 (_) 来避免必须命名第二个参数。
如果您愿意,还可以通过在参数名称前面放置井号 (#) 来为第一个变量提供外部参数名称。
您可以在 Apple 的 Swift 文档中查看更多相关信息:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Methods.html
Swift 按照以下规则为参数提供自动外部名称:
- 全局函数: 没有自动外部名称
- class/struct/enum 方法:所有参数的自动外部名称,但第一个
- 初始化程序:所有参数的自动外部名称
就是说,如果它在您的情况下不起作用,要求您为第二个参数指定外部名称,那么这可能意味着 您已将该函数声明为 class 或结构方法,而不是全局函数。
我正在从苹果书上学习swift。在 xcode 中编写代码时,出现参数缺少表单函数的错误。
根据 Apple 代码应该是
func halfOpenRangeLength(start: Int, end: Int) -> Int {
return end - start
}
调用此函数时:
println(halfOpenRangeLength(1, 10)) // According to Apple.
但是当我在上面输入时,它说插入 end
所以这个语句变成了
println(halfOpenRangeLength(1, end:10))
为什么会这样?
谢谢
改用这个我已经检查过它有效
func halfOpenRangeLength(start: Int, end: Int) -> Int {
return end - start
}
println("\(halfOpenRangeLength(1, 10))")
如果您不希望它需要参数名称,您只需要在它前面添加 _ 就不会再打扰您了:
vv
func halfOpenRangeLength(start: Int, _ end: Int) -> Int {
Swift 总是给第一个参数一个本地参数名,没有外部参数名。这意味着您不需要在使用该方法时调用它。
之后,每个参数都被赋予了本地和外部参数名称。这是为了清楚起见。正如 Leonardo 所说,您可以通过在参数名称前放置下划线 (_) 来避免必须命名第二个参数。
如果您愿意,还可以通过在参数名称前面放置井号 (#) 来为第一个变量提供外部参数名称。
您可以在 Apple 的 Swift 文档中查看更多相关信息:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Methods.html
Swift 按照以下规则为参数提供自动外部名称:
- 全局函数: 没有自动外部名称
- class/struct/enum 方法:所有参数的自动外部名称,但第一个
- 初始化程序:所有参数的自动外部名称
就是说,如果它在您的情况下不起作用,要求您为第二个参数指定外部名称,那么这可能意味着 您已将该函数声明为 class 或结构方法,而不是全局函数。