2015-01-18 2 views
3

Рассмотрим этот код в Swift игровой площадки:Почему моя версия для печати не работает на детской площадке Swift?

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

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

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

enter image description here

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

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

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

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

+1

Да, кажется, ограничение на игровой площадке, так как заметил здесь http://stackoverflow.com/a/27830622/1187415: *» Я считаю, что и println, и debugPrintln используют описание if-and-only - если класс спускается из NSObject. "* –

+0

Интересно. Да, он работает на игровой площадке, когда я наследую NSObject. Но чувствует, что он тоже должен работать. Я следую Session 404 «Advanced Swift» от WWDC 2014. Он не говорит конкретно о игровых площадках, но использует этот подход для регистрации объекта Swift, который не наследуется от NSObject. – Jaanus

+1

Время записи другого сообщения об ошибке :) –

ответ

1

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