与函数名称冲突的变量名称导致"变量在其自己的初始值中使用"

mrv*_*nzo 2 compilation ios swift

有这个功能

private func date(from string: String) {
    // Do thing with string
}
Run Code Online (Sandbox Code Playgroud)

用它来调用时

let date = date(from: "11:30")
Run Code Online (Sandbox Code Playgroud)

它会产生以下错误

Variable used within its own initial value

显然将代码更改为

let anythingButDate = date(from: "11:30")
Run Code Online (Sandbox Code Playgroud)

将使错误消失,但我试图理解为什么变量名和方法名之间首先存在冲突.

更新:

更精确地说-我明白,编译器有问题与赋予变量和示例代码中的相同名称的功能,但我很好奇,为什么不能Swift编译器,一个区别是一个变量名,另一个是功能名称.

Sul*_*han 5

函数和变量之间没有很大区别,因为即使变量也可以包含函数或闭包.你所拥有的是标识符冲突.

您可以使用

date = self.date(...)
Run Code Online (Sandbox Code Playgroud)

使意图明确.