|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Dec 2009
Сообщений: 48
|
Строгая типизация данных. Как правильно писать код?
Здравствуйте. Так-уж вышло, что со строгой типизацией данных столкнулся только при изучении as3. Отсюда есть сомнения по правильности их использования в некоторых моментах. Приведу пример:
public class MyObject { private var color:uint; public function MyObject(){} public function get value():* { return color; } public function set value(val:uint):void { color = val; } } Варианты ответа : A) Изменить тип данных color:* B) Добавить флаг в класс empty:Boolean и делать проверку через флаг D) Ваш вариант ответа. Последний раз редактировалось mexoboy; 19.02.2010 в 16:18. |
|
|||||
Регистрация: Jun 2006
Сообщений: 400
|
Думаю флаг. Вариант В.
|
|
|||||
Регистрация: Dec 2009
Сообщений: 48
|
Цвет как раз ARGB и все значения uint заняты.
|
|
|||||
Регистрация: Sep 2009
Сообщений: 127
|
А я бы Number использовал бы, и не парился.
|
|
|||||
Ну если так важно знать о изменении тогда вариант B.
Есть еще варианты: каждый цвет хранить отдельно, в сеттер диспатчер запихнуть, сделать обязательным параметром в конструкторе и т.д. |
|
|||||
* = зло
|
|
|||||
Регистрация: Dec 2009
Сообщений: 48
|
Мне как раз не нужно выполнять никаких логик. Все что мне требуется это возвращать color либо как uint, либо как null.
Пока пришел к выводу, что этот вариант будет правильнее: |
|
|||||
listener
|
А что мешает использовать нормальное дефолтное значение?
public class MyObject { private const DEFAULT_COLOR:uint = 0; ... public function MyObject(){ color = DEFAULT_COLOR; } public function get value():uint { return color; } public function set value(val:uint):void { if(val == DEFAULT_COLOR)return;// если хотите, толко это несколько нелогично color = val; } } // снаружи if(myobj.color == myobj.DEFAULT_COLOR){ // ... } Последний раз редактировалось alexcon314; 19.02.2010 в 16:02. |
|
|||||
Регистрация: Dec 2009
Сообщений: 48
|
Так, по поводу private var color:int = -1; Отменяется =( uint диапозон больше, чем int.
2alexcon314 Проблема в том, что есть понятие пустота и что-то. В данном случае для color:uint = 0 в ARGB соответствует черный цвет с альфой 100%. |
Часовой пояс GMT +4, время: 01:49. |
|
« Предыдущая тема | Следующая тема » |
|
|