|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Почему не изменяется значение boolean
Здравствуйте! Подскажите, пожалуйста.
import flash.events.Event; var myBoolean:Boolean = true; var myNumber:int = 0; stage.addEventListener(Event.ENTER_FRAME, updateFrames); function updateFrames(event:Event):void { //Если myBoolean true, if(myBoolean) { trace("Выполняется условие связанное с myBoolean!"); //Если myNumber больше 9, то: if(myNumber > 9) { trace("Выполняется условие связанное с myNumber!"); //Изменяю значение myBoolean на false: myBoolean = false; } //Или если не больше, то: else { myNumber += 1; } } } Вывод: Выполняется условие связанное с myBoolean! Выполняется условие связанное с myBoolean! Выполняется условие связанное с myBoolean! Выполняется условие связанное с myBoolean! Выполняется условие связанное с myBoolean! Выполняется условие связанное с myBoolean! Выполняется условие связанное с myBoolean! Выполняется условие связанное с myBoolean! Выполняется условие связанное с myBoolean! Выполняется условие связанное с myBoolean! Выполняется условие связанное с myBoolean! Выполняется условие связанное с myNumber! ++++ import flash.events.Event; var myBoolean:Boolean = true; var myNumber:int = 0; stage.addEventListener(Event.ENTER_FRAME, updateFrames); function updateFrames(event:Event):void { myFunction(myBoolean,myNumber); } function myFunction(boolean,number) { //Если myBoolean true, if(boolean) { trace("Выполняется условие связанное с boolean!"); //Если myNumber больше 9, то: if(number > 9) { trace("Выполняется условие связанное с number!"); //Изменяю значение myBoolean на false: boolean = false; } //Или если не больше, то: else { number += 1; } } } Выполняется условие связанное с boolean! Выполняется условие связанное с boolean! Выполняется условие связанное с boolean! Выполняется условие связанное с boolean! Выполняется условие связанное с boolean! Выполняется условие связанное с boolean! Выполняется условие связанное с boolean! Выполняется условие связанное с boolean! Выполняется условие связанное с boolean! Выполняется условие связанное с boolean! Выполняется условие связанное с boolean! Выполняется условие связанное с boolean! Выполняется условие связанное с boolean! Как такое чудо можно исправить? Большое спасибо. |
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Какая беда. А можете сказать почему (если знаете)?
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Потому что это простой тип. Такое устройство языка – простые типы передаются по ссылке, сложные – по значению.
Вы можете завернуть Ваш тип в сложный объект: Или работать вообще с полем myBoolean напрямую – это более правильно. Если нужно "много" таких элементов – то очевидно, одним myBoolean не обойтись и это вполне себе тянет на создание нового класса. Оп! Оп! Оп! О-о-о -ооо пэ!
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Мы за типобезопасность:
Это работает немного быстрее, чем использование динамического объекта {boolean: true}; Но на практике это страсть как редко используется, обычно поля делают типа boolean, но объектов не создают - дорого очень. Кстати, тут даже дело не в примитивности типа: |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Вот черт.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
А может всё намного проще ?
Вместо такой записи: Делаем такую:
__________________
Примеры работ/исходный код: http://ccc.pp.ua |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Ну и какая разница? В функцию так и будут посылаться true и 0, потому как функция никак не изменяет ни myBoolean, ни myNumber. Понятно что 0+1 никогда не станет больше 9, а true никогда не станет false. Ну а то, что аргументы не типизированы, при нестрогой компиляции неважно. То есть исправить конечно же надо, но к проблеме это никакого отношения не имеет.
__________________
Reality.getBounds(this); |
Часовой пояс GMT +4, время: 20:31. |
|
« Предыдущая тема | Следующая тема » |
|
|