Странное поведение Boolean
Почему не работает
Код AS3:
Код AS3:
|
Лучше всегда избегать неявного преобразования типов по разным соображениям. (Качество и безопасность кода, скорость выполнения.)
|
"+" — более сложный генерик, допускающий разнообразие типов, например при сложении строк. Умножение строк допустимо? )))
|
Цитата:
Добавлено через 36 секунд Да и к тому же получается на 12 как если бы мы складывали строки, а число 3. |
Код:
Почему тогда в джаве не работает? в CLisp-e (+ t 2) +: T is not a number, ( * t 2) : T is not a numbe в python True * 2 == 2, True + 2 == 3 в js true * 2 == 2 и true + 2 == 3 Erlang 3> true + 2. ** exception error: an error occurred when evaluating an arithmetic expression in operator +/2 called as true + 2 4> true * 2. ** exception error: an error occurred when evaluating an arithmetic expression in operator */2 called as true * 2 в haxe - не скомпилирует c++11 true * 2 == 2, true + 2 == 3 c# - не скомпилируется rust - не скомпилируется UPD Код:
Bash |
Цитата:
|
Цитата:
ЗЫ Зачем работая с as3 вы сравниваете что-то с другими языками, когда вы с ними в данный момент не работаете? почитайте про приведение типов в ас3, посмотрите на оператор +, подумайте, все встанет на свои места |
СлаваRa, ну что вы в загадки то играете. Лучше объясните по какой логике разработчики языка разрешили неявное приведение булева типа к числу для сложения, но не разрешили для умножения. Уверен можно уложиться в одно предложение.
|
оператор + перегружен(на уровне VM), как минимум, для конкатенации строк, скорее всего(уверен в этом на 146%), приведение типа срабатывает в зависимости от каких-то условий, т.е. при использовании + для конкатенации? происходит преобразование в строку, если один из операндов строка, видимо при использовании операции сложения bool и int первый из-за автокаста преобразуется в ближайшее подходящее, т.е. в int(1), оператор * используется только для умножения числовых типов и не имеет иных предназначений, поэтому никаких преобразований операндов не происходит.
|
Код AS3:
Цитата:
|
Часовой пояс GMT +4, время: 15:35. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.