具有此功能
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
,即使您有一个参数,如果您尝试在这种情况下调用同名的变量,它也会发生冲突 date
.发生的情况是编译器尝试使用声明的常量date
来分配自己的初始值。
当你使用anythingButDate
时,这很好,因为你的函数不是那个叫的,你也没有任何其他叫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