[英]Variable name conflicts with function name leads to “Variable used within its own initial value”
有这个功能
private func date(from string: String) {
// Do thing with string
}
调用它时
let date = date(from: "11:30")
它产生以下错误
Variable used within its own initial value
显然将代码更改为
let anythingButDate = date(from: "11:30")
将使错误消失,但我首先试图理解为什么变量名和方法名之间存在冲突。
更新:
更准确地说 - 我知道编译器在给变量和函数同名时遇到问题,但我很好奇为什么它不能区分一个是变量名,另一个是函数名。
函数和变量之间没有太大区别,因为即使是变量也可以包含函数或闭包。 您拥有的是标识符冲突。
您可以使用
date = self.date(...)
以明确意图。
你的函数被调用的date
,即使它有一个参数,如果you're试图调用一个变量在这种情况下,相同的名称将发生冲突date
。 发生的情况是编译器尝试使用声明的常量date
来分配自己的初始值。
当您使用anythingButDate
然后it's很好,因为你的函数不叫这一点,你没有必要叫任何其他功能anythingButDate
。
let date = date(from: "11:30") // will not work
let datex = date(from: "11:30") // will work
let anythingButDate = date(from: "11:30") // will work
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.