2015-02-10 3 views
2

У меня странное поведение в быстрой игровой площадке.Println и String Вопрос о конкатенации

Когда я ввожу эти строки кода

println("test 1" + "test 2" + "test 3" + "test 4") //compiles 
println("test 1" + "test 2" + "test 3" + "test 4" + "test 5") //compiles 
println("test 1" + "test 2" + "test 3" + "test 4" + "test 5" + "test 6") //error! 

Последняя строка кода не компилируется. Ошибка:

Expression was too complex to be solved in reasonable time; consider breaking up the expression into distinct sub-expressions

Я делаю что-то неправильно или это какая-то ошибка? Кажется, что предел для println() - 5 строковых конкатенаций?

ответ

2

Вы не делаете ничего плохого. Apple.

Функция println является проблемой, а не конкатенацией строк. Это дает мне ту же ошибку:

println(1 + 2 + 3 + 4 + 5 + 6) 

Вы можете работать вокруг него, объявив свою собственную обертку:

func myprint<T>(x: T) { 
    println(x) 
} 

myprint(1 + 2 + 3 + 4 + 5 + 6) 
myprint("1" + "2" + "3" + "4" + "5" + "6") 
myprint("1" + "2" + "3" + "4" + "5" + "6" + "1" + "2" + "3" + "4" + "5" + "6") 

Выход:

21 
123456 
123456123456 
+0

Я играл немного с Xcode Beta 6.3. Похоже, Apple исправила эту проблему :) – nemke

+0

@nemke IMHO, пески просто сдвинулись. Возможно, он зафиксировал некоторые ситуации, но у меня есть некоторые выражения, которые все еще «слишком сложны» в 6.3 beta 3. У меня даже есть одно выражение, которое отлично работает в Xcode 6.2, но мне пришлось его разбить, потому что он, по-видимому, «слишком сложный» "для 6.3. (Вздох.) – Rob

 Смежные вопросы

  • Нет связанных вопросов^_^