Swift 1.2:令人讨厌的片段显示类型可以被变量标识符遮蔽

时间:2015-07-07 19:16:13

标签: swift syntax types scope

为什么Swift允许这样做:

// Swift 1.2, Xcode 6.4, OS X 10.10.4
// Running within an iOS App, not a Playground
func wtf() {
    var String = 3
    var Int = "3a"
    println(String) // outputs 3
    println(Int)    // outputs 3a
    println(Int.toInt()) // outputs nil; clearly acting as a String
    // var x: String = "abc" // Not OK: 'String' is not a type
}

类型和变量绑定可以相互干扰吗?甚至是基本类型?

1 个答案:

答案 0 :(得分:0)

在“真实”环境(非Playground)中,我在第1行收到错误消息 - > 在声明之前使用局部变量'Int'

如果我注释掉第1行,代码会编译并在添加行以打印xy之后

Swift.String
3
Optional(3)
abc
abc