Swift &引用;call中的额外参数";对于ViewController中的函数

Swift &引用;call中的额外参数";对于ViewController中的函数,swift,Swift,我对编码和学习递归非常陌生。我只是想调用函数raise,看看它是如何工作的,但我遇到了以下错误: 调用中的额外参数 有人能告诉我为什么我会犯这个错误吗?谢谢。问题是var check=raise(2,exp:4)位于类的根级别,您不能这样做。您必须将此调用放在函数中或类外。这里我们从内部调用viewDidLoad: class ViewController: UIViewController { func raise(base: Int, exp: Int) -> Int {

我对编码和学习递归非常陌生。我只是想调用函数
raise
,看看它是如何工作的,但我遇到了以下错误:

调用中的额外参数


有人能告诉我为什么我会犯这个错误吗?谢谢。

问题是
var check=raise(2,exp:4)
位于类的根级别,您不能这样做。您必须将此调用放在函数中或类外。这里我们从内部调用
viewDidLoad

class ViewController: UIViewController {

    func raise(base: Int, exp: Int) -> Int {
        if (exp == 0) {
            return 1
        }
        else {
            return base * raise(base, exp: exp - 1)
        }
    }

    var check = raise(2, exp: 4)  // error here

    print(check)

}

在Swift 1中,如果第二个参数在函数签名中没有标记为
#
,则不必指定其名称,因为函数和方法之间存在区别。Swift 2不再是这种情况。

您不能在类的实现中调用函数。如果您尝试像这样更改代码,它将很好地工作(作为递归)


请确保在返回任何内容之前编写代码,否则它将不会运行。

我使用的是Swift 2.0,当我使用您的代码时,它不会给我任何错误。在旧版本的Swift中,调用将是
var check=raise(2,4)
@Nishant,因为您使用了Playway,所以可以吗?试在项目中。@wm.p1us:我只在项目中使用它。请查看Philip的评论,这可能会有所帮助。
class ViewController: UIViewController {

    func raise(base: Int, exp: Int) -> Int {
        if (exp == 0) {
            return 1
        }
        else {
            return base * raise(base, exp: exp - 1)
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        var check = raise(2, exp: 4)

        print(check)
    }

}
class ViewController: UIViewController {

func raise(base: Int, exp: Int) -> Int {
    if (exp == 0) {

        let check = raise(2, exp: 4)  // no error here  
        print(check)
        return 1
    } else {

      let check = raise(2, exp: 4)  // no error here
      print(check)
      return base * raise(base, exp: exp - 1)
    }
  }
}