Почему моя реализация Printable не работает на игровой площадке Swift?

Рассмотрим этот код на игровой площадке Swift:

import Cocoa
class Thing: Printable {
    let name: String
    init() {
        name = "something"
    }
    var description: String { return name }
}

let a = Thing()
println("hello, \(a)")

Как изображение:

введите здесь описание изображения

Ожидается: я ожидаю, что последняя строка напечатает «привет, что-то».

Наблюдается: он печатает «привет, __lldb_expr_1.Thing», как будто я не реализовал протокол Printable.

Код на самом деле работает в контексте реального приложения iOS, где он печатает «привет, что-то», используя протокол Printable, как и ожидалось.

Почему этот код не печатает то, что я ожидаю на игровой площадке? Это ограничение детских площадок?


person Jaanus    schedule 18.01.2015    source источник
comment
Да, похоже, это ограничение игровой площадки, как замечено здесь stackoverflow.com/a/27830622/1187415: < i>Я обнаружил, что и println, и debugPrintln используют описание тогда и только тогда, когда класс происходит от NSObject.   -  person Martin R    schedule 18.01.2015
comment
Интересный. Да, это работает в Playground, когда я наследую от NSObject. Но чувствуется, что он должен работать и без него. Я следую сеансу 404 «Advanced Swift» с WWDC 2014. Он не говорит конкретно о игровых площадках, но использует этот подход для регистрации объекта Swift, который не наследуется от NSObject.   -  person Jaanus    schedule 18.01.2015
comment
Пора отправить еще один отчет об ошибке :)   -  person Martin R    schedule 18.01.2015


Ответы (1)


Я думаю, что эта ошибка была исправлена ​​в Swift 1.2 swift-playground

person Rafael Machado    schedule 10.05.2015