2015-07-01 3 views
1

Правда, этот случай немного искажен, но все же мне любопытно узнать, является ли это потенциальной ошибкой в ​​компиляторе Swift2.0. Попробуйте это в Xcode7 playground-Странный случай, когда Swift2.0 позволяет использовать неинициализированный глобальный внутри замыкания

var global : Int 

var factorial : (Int->Int)! 

factorial = { x in 

    global = global + 1 
    print(global) 
    return x == 0 ? 1 : x * factorial(x - 1) 
} 

factorial(5) 

enter image description here

Компилятор счастливо компилирует и даже вычисляет факториал и увеличивает глобальный тоже и даже отображает значение глобальной внутри закрытия при вызове. Теперь попробуйте распечатать глобальную информацию после вызова факториала (5), и теперь компилятор вдруг начинает жаловаться, что вы пытаетесь использовать «глобальный» перед инициализацией !.

Я думаю, что это ошибка в компиляторе где-то и поведение должно было быть последовательным. Но сначала подумал о консультациях с экспертами! Есть предположения?

enter image description here

ответ

1

Похоже ошибка для меня. Воспроизводимость для Swift 1.2 и 2.0 для меня. Скачайте радар, Apple по достоинству оценят это.

+0

Спасибо. Да, напишу. – Shripada

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