2016-09-20 120 views
0

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

import Foundation 

func aaa() { 
    print(a) 
} 

let a = "a" 

aaa() 

这是工作得很好,并打印“一”在控制台上,但让做这个程序较为复杂:

import Foundation 

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

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

aaa() 

和线路

print(b) 

标有错误

Use of unresolved identifier 'b'

我们可以更容易:

import Foundation 

func aaa() { 
    print(a) 
} 

aaa() 

let a = "a" 

再次,线

print(a) 

标有错误

Use of unresolved identifier 'a'

我不是新手,我undertand,我可以很容易地解决这个错误比如将所有变量放在程序的开头。问题是:为什么会发生? 我认为每个文件的扩展名为.swift,它是一个类,我可以把变量和函数,以任意顺序调用函数(所有变量和常量将是全局的)...最后一件事,我没有能力在Swift 2.2上测试这个,但是我不记得我之前遇到过这个bug,那么它可能是Swift 3.0编译器的错误? 谢谢你的回答!

回答

0

这似乎是一个斯威夫特编译器错误:

当我与其他变量进行了测试:

enter image description here

它总是跳过第一个问题,在第二个变量的规定,在第一。

一般来说,如果想访问的变量,这是一个功能里面,想做任何行动这样一个变量,它必须是宣布有

我会遵循这个约定无处不在。

+0

谢谢你的回答。您如何看待,我们应该向苹果公司报告? – Alex

+0

是的,为什么不呢?如果你是幸运的,如果他们回复你的不同解释,不要忘了在这里分享:) – pedrouan

+0

我会的,但我需要一些时间... – Alex