PDA

Просмотр полной версии : сократить длинные if


ambuddy
30.12.2008, 15:11
Возможно ли как-то реализовать нечто подобное:
var a = 5;
var b = 7;
var n = 5;
if( n == (b || a)) trace("ok");вместо if( n == a || n == b) trace("ok");
Просто иногда у меня вместо a,b или n бывают умопомрачительно длинные в написании объекты, которые надо сравнить парно. Я имею ввиду именно сократить написание условия...

Wolsh
30.12.2008, 18:49
Написать свою функцию compare():Boolean, где в цикле сравнивать первый элемент массива arguments со всеми остальными и возвращать результат))

Добавлено через 10 минут
function compare ():Boolean {
var equal:Boolean = false
for(var i:Number = 1; i<arguments.length; i++){
if(typeof arguments[i] == typeof arguments[0]){
if(arguments[i]==arguments[0]){
equal = true
break
}
}
}
return equal
}
//// ПРОВЕРКА
trace(compare (6,12,"ert",45,6,0,75))
trace(compare (6,12,"ert",45,36,0,75))
trace(compare (6,2,6))
trace(compare (6,.2,"ert",-5,66))
trace(compare ("ert",6,4,"ert"))

ambuddy
30.12.2008, 19:56
хм, ну функция - конечно выход, просто я думал, может есть какой-то быстрый синтаксис сравнения, как типа сокращение вроде:
my = (a > b) ? 1 : 0; вместо if(a>b) my = 1; else my = 0;

Zik.
30.12.2008, 20:11
Просто иногда у меня вместо a,b или n бывают умопомрачительно длинные в написании объекты, которые надо сравнить парно. Я имею ввиду именно сократить написание условия...
А вы так и пишите.
Умопомрачитальный код = a;
Умоустаршающий код = b;
Умоломающий код = n;
А потом

if( n == a || n == b) trace("ok");

Wolsh
30.12.2008, 20:27
Ага, не тернарный оператор, а неопределярный))) Это поможет Вам использовать фантастически длинные пути к объектам вместо коротких ссылок-переменных? И пусть проц горит синим пламенем, каждый раз разыскивая какой-нибудь this.container["image_container_"+i+"mc"].isZoomed_flag. И при этом Вас что-то раздражает в повторении оператора сравнения? :) Только в Ваших силах сделать имена нормальными из двух букв или использовать каждый раз жуткие конструкции с путями глубиной больше трех.
И еще - тернарный оператор ?: - не сокращение if then else для ленивых, это if then else придумали для человекочитаемости.
Пользуйтесь функциями. Для того они и существуют. Язык не может предоставить Вам компактные решения для любой уникальной задачи. Это - в Ваших силах. Язык дает для этого все инструменты. Удачи и с Наступающим!