Удалить переменную в boo - PullRequest
4 голосов
/ 07 июня 2011

Я знаю, что сходство между boo и Python является лишь поверхностным, но все же, как я могу сделать эквивалент следующего кода Python в boo?

a = 'a'
del a
a = 1

Я пробовал

a = 'a'
a = null
System.GC.Collect()                                                                                                                                                    
System.GC.WaitForPendingFinalizers()
a = 1

Но Booish говорит мне, что он не может конвертировать 'int' в 'string'.

Смысл не в использовании типа утки.Возможно ли это?

Редактировать : В соответствии с предложениями по комментариям изменилось del с функции на оператор.

Ответы [ 2 ]

3 голосов
/ 07 июня 2011

Это невозможно в Бу.Бу использует неявную статическую типизацию.Таким образом, все переменные строго типизированы на основе их первого присваивания в своей области видимости.После присвоения тип переменной не может быть изменен.

Сборка мусора гарантирует, что объекты в куче, на которые больше нет ссылок, будут удалены из кучи, но это не повлияет на область видимости каждой переменной для каждого языка.В Boo переменная не выходит из области видимости до конца блока, в котором она была определена.

Утиная типизация в Boo обрабатывается компилятором, который назначает ей статический тип «object» изатем использует код времени выполнения, чтобы понять, что базовая среда выполнения .NET считает универсальным объектом.

0 голосов
/ 18 июля 2011

вы можете объявить как объект

a как объект a = "letter_a"

распечатать "букву a"

a = 1 напечатать 1

Мне нравится больше бу, чем питон!

...