Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.11.2018, 17:15
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 1  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
По умолчанию да, нет, по фигу

Друзья, помогите советом.

У меня регулярно возникает ситуация, когда для какой-то переменной, изначально задуманной и объявленной в качестве Boolean, начинает резко не хватать двух положений. Например, для действия с предметом экипировки может быть 2 варианта: надеть (true) или снять (false). Но чуть только появляется условный вариант "оставить без изменений", вся система рушится.

Практический вопрос, что вы думаете на счёт использования значения null для переменных типа Boolean? Мне пока сильно не понравилось, в первую очередь из-за того, что начинаешь путаться в краткой форме записи проверки if(value).

Пока для себя придумал вариант с объявлением таких переменных как String и присвоении им текстовых строк "true", "false" или понятный строковый null, если ничего менять не надо. Правда, такое решение выглядит тоже как-то не айс...
__________________
Не сломано - не чини!

Старый 01.11.2018, 17:34
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 2  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
А нельзя построить модель так, чтобы просто не дергать значение, если оно без изменений?

Либо можно подставлять имеющееся значение экипировки, то есть при
Код AS3:
public function set equipmentEnabled(value: Boolean): void {
			if (value === this._equipmentEnabled) return;
 
			this._equipmentEnabled = value;
		}
 
public function get equipmentEnabled(): Boolean { return this._equipmentEnabled; }
если без изменений, делать

Код AS3:
item.equipmentEnabled = item.equipmentEnabled;
Если такой вариант не подходит, в любом случае лучше пользоваться не строками, а идентификаторами от нуля до двух. 0=false, 1=true, 2=return

Код AS3:
public function set equipmentEnabled(value: int): void {
			if (value === 2) return;
 
			this._equipmentEnabled = !!value;
		}
__________________
while(live()) { hope(); }

Старый 01.11.2018, 17:55
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 3  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Цитата:
Сообщение от ZergMaster Посмотреть сообщение
А нельзя построить модель так, чтобы просто не дергать значение, если оно без изменений?
Всё можно. Но я спрашивал о частной ситуации и вариантах её разрешения.

Цитата:
Если такой вариант не подходит, в любом случае лучше пользоваться не строками, а идентификаторами от нуля до двух. 0=false, 1=true, 2=return
Я так понимаю, из соображений экономии ресурсов? И я так понимаю, что идея использовать значение null для переменных типа Boolean тебе тоже не по душе?
__________________
Не сломано - не чини!

Старый 01.11.2018, 18:11
RedHead90 вне форума Посмотреть профиль Отправить личное сообщение для RedHead90 Найти все сообщения от RedHead90
  № 4  
Ответить с цитированием
RedHead90

Регистрация: Apr 2018
Сообщений: 42
Цитата:
Объект Boolean — это тип данных, который используется для логических операций и может иметь одно из двух значений(true или false).
Если задашь переменной типа Boolean значение null, оно преобразуется в значение false.
Ты можешь объявить тип переменной Object и тогда сможешь использовать для неё как true, false, так и null, но о безопасности типа тогда говорить не приходиться.

А вообще попахивает каким-то бредом. Зачем вообще что-то делать, если ничего делать не надо?

Старый 01.11.2018, 18:40
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 5  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
RedHead90, всё, понял-отстал. Спасибо. Это ты верно напомнил определение типа Boolean.

Вопрос снят, я фигню сморозил.
__________________
Не сломано - не чини!

Старый 01.11.2018, 19:27
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 6  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
1. Название тему не отражает сути вопроса!
2. Смотрите, что такое битовые маски.
__________________
местонахождение

Старый 01.11.2018, 20:32
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 7  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
3. Либо Enum. В as3 его нет, реализуется просто через Int с классом статических констан (Status.UNKNOWN, Status.ENABLED, Status.DISABLED)

Цитата:
Пока для себя придумал вариант с объявлением таких переменных как String и присвоении им текстовых строк "true", "false" или понятный строковый null, если ничего менять не надо. Правда, такое решение выглядит тоже как-то не айс...
Ты его почти изобрёл, enum. )) Только, он должен быть на основе int/uint (операций с целочисленным самые быстрые) и оформлен чуть удобнее.
__________________
Дети не должны знать о своих родителях

Старый 02.11.2018, 01:47
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 8  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
Цитата:
Сообщение от Appleman Посмотреть сообщение
Я так понимаю, из соображений экономии ресурсов?
ага. Все ж я бы пересмотрел подход, чтобы не было необходимости что-то делать, когда делать чего-то не надо
__________________
while(live()) { hope(); }

Старый 02.11.2018, 10:00
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 9  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
ZergMaster, в первом сообщении я привёл не конкретный пример, а наиболее наглядный для краткой иллюстрации сути вопроса. Не парься.

Если интересно, подобная ситуация на практике у меня возникла, когда потребовалось применять не одиночное значение да/нет, а профиль из нескольких, который имеет свой персональный ID и объединяет их в некую осмысленную комбинацию. Вот тут и всплывает проблема того, что раньше при отсутствии изменений можно было действительно просто ничего не делать, а теперь стало нельзя!
__________________
Не сломано - не чини!

Старый 02.11.2018, 12:20
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 10  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Цитата:
2. Смотрите, что такое битовые маски.
Они хороши для описаний кучи пермутаций кучи булевых (хотя щас бы в 2018 на флеше байтики экономить).
Описать одно из трёх значений оно не сильно поможет

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:26.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 13:26.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.