代码之家  ›  专栏  ›  技术社区  ›  Gallaugher

Xcode 10 Playgrounds变量初始化更改?Xcode 10操场是翻译吗?

  •  4
  • Gallaugher  · 技术社区  · 8 年前

    我注意到xcode 10中的playgrounds不再允许使用声明的变量,而是允许使用未初始化的变量。例如: 虽然此代码可以在Xcode 9游戏机中工作,但在Xcode 10游戏机中(至少在Beta 1中),它会崩溃:

    var myValue: Int
    //...
    myValue = 100
    
    print (myValue)
    
    // Xcode 9 prints 100
    // Xcode 10 reports an error: variables currently must have an initial value when entered at the top level of the REPL
    
    1. 这是新的行为,还是当前Xcode 10测试版中的一个bug?

    2. 我之前提到过Xcode Playgrounds是一个解释器,但是人们会不会仍然认为Xcode 10 Playgrounds是一个解释器(这总是正确的)?苹果公司把“运行”按钮称为“编译”代码。

    谢谢!

    2 回复  |  直到 8 年前
        1
  •  8
  •   Chris    7 年前

    我犯了这个错误。我有两个不同的操场,一个有错误,一个没有。问题是我的操场没有设置“自动运行”。要设置该选项,请单击操场调试窗口顶部的播放箭头,您将看到“自动运行”选项,选择它。

    必须是自动运行模式更像是运行整个程序,而手动运行则不是。

        2
  •  3
  •   MarkFromMars    7 年前

    1)如果不初始化let声明的常量,现在得到的错误是xcode 10的新错误,但仅在swift repl或playground中,而不是在编译代码时(见下文)。

    2)在 Swift Playgrounds REPL (read eval print loop)和解释器几乎是但不是完全一样的东西。repl是一个交互式文本编辑器,它读取代码语句,执行它们,并打印结果,在编辑文本时循环。当您在操场上进行编辑时,xcode会一遍又一遍地重新执行编辑器中的所有代码,每次执行一行,就好像您第一次每次都在键入每一行一样。这与解释器的不同之处在于,解释器通常从输入文件中读取代码,每次解释并执行一行代码,而不是在执行开始前先编译并链接到机器代码。

    推荐文章