gpt4 book ai didi

swift - 如果我重新定义方法参数,为什么它不是编译错误?

转载 作者:行者123 更新时间:2023-11-28 15:35:40 25 4
gpt4 key购买 nike

我的代码中有一个错误,事实证明我在方法的代码中重新定义了一个方法参数而没有意识到这一点。我预计会出现编译器错误,但我没有得到:

func someMethod(parameter:Int)
{
let parameter = 10 //Why does this not result in error?
}

我知道你可以做 parameter = 10,但我不明白为什么 let parameter = 10 是有效的。

这种行为有充分的理由吗?

最佳答案

我想到的主要原因是它允许 if letguard let 按照它的方式工作,但这种能力在许多不同的情况下都很有用。

在某些方面,这并不理想,可能会导致错误,但至少有一个适用的一致规则,您可以习惯:

Variable names defined outside of the current scope, (i.e. {}), can be re-defined.

这适用于类/结构方法,以及闭包、内部函数等。

这是行不通的原因:

func testFunc(test: String) {
var test: Int? = 2
guard let test = test else {
return
}
}

但是这样做:

func testFunc(test: String) {
var test: Int? = 2
if let test = test {
return
}
}

关于swift - 如果我重新定义方法参数,为什么它不是编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44316489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com