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)
}
}
}