【问题标题】:Swift 3.0 Use of unresolved identifierSwift 3.0 使用未解析的标识符
【发布时间】:2017-01-28 04:59:54
【问题描述】:

我有一个非常简单的项目。它是使用 Xcode 8.0 在 Swift 3.0 上编写的命令行工具。这个程序是:

import Foundation

func aaa() {
    print(a)
}

let a = "a"

aaa() 

这运行得很好,在控制台中打印“a”,但让这个程序更复杂:

import Foundation

func aaa() {
    print(a)
    print(b)
}

let a = "a"
let b = "b"

aaa()

和线

print(b)

标有错误

使用未解析的标识符“b”

我们可以让事情变得更简单:

import Foundation

func aaa() {
    print(a)
}

aaa()

let a = "a"

又是一行

print(a)

标有错误

使用未解析的标识符“a”

我不是新手,我知道我可以轻松修复此错误,例如将所有变量放在程序的开头。问题是:为什么会这样? 我认为每个扩展名为 .swift 的文件都是一个类,我可以放置变量和函数,以任何顺序调用函数(所有变量和常量都是全局的)......最后一件事,我没有能力在 Swift 2.2 上测试这个,但我不记得我以前遇到过这个错误,所以它会是 Swift 3.0 编译器的错误吗? 感谢您的任何回答!

【问题讨论】:

    标签: swift2 theory swift3 xcode8 command-line-tool


    【解决方案1】:

    这似乎是一个 Swift 编译器错误:

    当我用其他变量测试它时:

    它总是跳过第一个问题并首先遵守第二个变量。

    一般来说,如果想要访问函数内部的变量,并且想要对这样的变量执行任何操作,则必须在此处声明。 p>

    我会在任何地方都遵循这个约定。

    【讨论】:

    • 感谢您的回答。你觉得我们应该向 Apple 报告吗?
    • 是的,为什么不呢?如果你很幸运,如果他们用不同的解释回复你,别忘了在这里分享:)
    • 我已将此错误报告给Apple,我不知道为什么,他们将其标记为重复。所以,我想,我不是第一个提到这个的人。
    猜你喜欢
    • 2016-04-29
    • 1970-01-01
    • 2015-05-13
    • 2016-11-28
    • 2015-05-25
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多