Either way is fine. I suspect this is a bug with the transformation the Swift 
compiler performs when compiling for a playground, rather than with the 
machinery that goes with running the playground, but I haven’t looked into it.

Jordan


> On Aug 7, 2017, at 13:22, Joe DeCapo <snoogan...@gmail.com> wrote:
> 
> Since it's Playground bug, should I file it in Apple's bug reporter rather 
> than Swift's?
> 
>> On Aug 7, 2017, at 3:12 PM, Jordan Rose <jordan_r...@apple.com> wrote:
>> 
>> I’d say that’s a bug! Mind filing it at https://bugs.swift.org ?
>> 
>> Thanks,
>> Jordan
>> 
>>> On Aug 4, 2017, at 12:41, Joe DeCapo via swift-users 
>>> <swift-users@swift.org> wrote:
>>> 
>>> Hi everyone,
>>> 
>>> I'm not sure if there's a more appropriate place to ask this question, but 
>>> I figured at the very least I could get pointed in the right direction. 
>>> I've tried searching online and haven't been able to find anything 
>>> addressing this.
>>> 
>>> I was trying to use the `defer` statement in a Playground, and was 
>>> surprised to find that it never prints anything in the preview pane on the 
>>> side. I was expecting the evaluation of the code in the `defer` statement 
>>> to show up in line with the statements, even though they're executed after 
>>> the last line in the function. I made a very simple playground that 
>>> modifies a global variable and prints the value in the `defer` statement, 
>>> and when I print the global variable after calling my function it shows the 
>>> correct updated value, so the code in the `defer` statement is getting run 
>>> as expected. Here's my sample code with the Playground output in comments 
>>> on the side:
>>> 
>>> var x = 3                   // 3
>>> func doSomething() {
>>>  print(1)                   // "1\n"
>>>  defer {
>>>      x += 1
>>>      print(x)
>>>  }
>>>  print(2)                   // "2\n"
>>> }
>>> doSomething()
>>> print(x)                    // "4\n"
>>> 
>>> I was expecting something like this:
>>> 
>>> var x = 3                   // 3
>>> func doSomething() {
>>>  print(1)                   // "1\n"
>>>  defer {
>>>      x += 1                 // 4
>>>      print(x)                       // "4\n"
>>>  }
>>>  print(2)                   // "2\n"
>>> }
>>> doSomething()
>>> print(x)                    // "4\n"
>>> 
>>> Is there some deep reason why code in `defer` statements doesn't show 
>>> anything in the preview pane in Playgrounds?
>>> 
>>> -Joe
>>> 
>>> <Defer.playground>
>>> 
>>> _______________________________________________
>>> swift-users mailing list
>>> swift-users@swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-users
>> 
> 

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to