Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Оператор присовоения(если не равно null) (http://www.flasher.ru/forum/showthread.php?t=214030)

Godwarlock 29.03.2017 20:58

Оператор присовоения(если не равно null)
 
Всем привет. Вот есть имедж, к которому применяется, какой-либо фильтр. Как определить без проверки if и выполнить функцию в случае, если фильтр не равен null?
Попытался таким образом
Код AS3:

img.filter.dispose() != null;

Выдаёт ошибку, что диспос, не может быть выполнен, если null. Я думал != null вот эта часть, как раз это проконтролирует или надо по другому?

faraday 29.03.2017 21:15

твой пример вообще не понятно откуда и с каким расчетом взять
для читабельности лучше брать как раз с ифом, но если хочется приключений, можно так.
Код AS3:

img.filter&&img.filter.dispose();

или так
Код AS3:

img.filter?img.filter.dispose():null


Godwarlock 29.03.2017 21:19

О, спасибо большое. Так работает)

faraday 29.03.2017 21:20

так а чем не устраивает все таки с ифом? зачем использовать конструкции которые потом не сможешь понять?)
Код AS3:

if (img.filter)
  img.filter.dispose()


Godwarlock 29.03.2017 21:22

Да просто хотелось всё в одну строку уместить. Сейчас понял, что можно сделать и так
Код AS3:

if (img.filter) img.filter.dispose();


faraday 29.03.2017 21:22

однако)

undefined 29.03.2017 21:27

кстати,в java, все эти !=null считается антипаттерном.Типа вместо null лучше создавать пустой MovieClip.

faraday 29.03.2017 22:00

это как?

alexandrratush 29.03.2017 22:46

Цитата:

Сообщение от faraday (Сообщение 1199941)
это как?

Скорее всего это Null Object pattern.

undefined 29.03.2017 22:54

Цитата:

Сообщение от alexandrratush (Сообщение 1199943)
Скорее всего это Null Object pattern.

Именно.Цель -избежать NPE без ненужных проверок.

caseyryan 30.03.2017 06:26

Цитата:

Сообщение от undefined (Сообщение 1199944)
Именно.Цель -избежать NPE без ненужных проверок.

Да. В джаве многое глупо сделано. Конечно, лучше же создать еще один объект и занять им память, вместо простой проверки есть ли вообще ссылка на объект.
Количество эксепшенов в джаве просто поражает воображение. Это как раз одна из причин, по которым мне перестала нравиться джава. Из-за всех этих try/catch код становится невероятно громоздким и трудночитаемым. Да и формирование эксепшена каждый раз - тоже не самая лёгкая процедура

undefined 30.03.2017 11:38

это же паттерн,его можно где угодно реализовать.Нельзя сказать что это косяк стандарта.
Цитата:

Да и формирование эксепшена каждый раз - тоже не самая лёгкая процедура
Да вроде также как и везде:
Код:

throw new MyException(...);

Zebestov 30.03.2017 15:24

Цитата:

Сообщение от Godwarlock (Сообщение 1199937)
Да просто хотелось всё в одну строку уместить.

Опля:
Код AS3:

img.filter && img.filter.dispose();


Godwarlock 30.03.2017 19:35

caseyryan
undefined

Господа, не хотите создать отдельную тему для обсуждения языка, который никаким боком к данной теме не относится?) Ладно один раз не по теме кто-то что-то сказал, так это наверно уже 5ая тема моя, где обсуждают левые веши...
Zebestov Спасибо, уже разобрался.

caseyryan 31.03.2017 10:25

Цитата:

Да вроде также как и везде:
Код:

throw new MyException(...);

Я имел в виду внутреннюю работу. Создание объекта Exception, сборка всего стека вызовов, приведшего к ошибке. Это намного более трудоемкая процедура, чем просто проверка наличия ссылки на объект

dimarik 31.03.2017 18:12

@caseyryan & @undefined
Так-с. Пожалуйста, сосредоточьтесь на теме топика.


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

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