Просмотр полной версии : Переключатель в одну строку - как?
Flash_MMX
08.07.2004, 18:36
Здравствуйте,
Подскажите, пожалуйста, как сделать переключатель в одну строку.
То есть: из "2" получить "-2", а при повторном прохождении этой строки обратно получить "2", и т.д. до бесконечности.
(Числа могут быть любыми 2-3, 10000-1, и т.д. Да и вообще это могут быть не числа, но любой пригодный флаг для On/Off или 1/-1.)
Главное сделать это в одну строку, т.к. модель:
if (x==2) { x=-2 }
if (x==-2) { x=2 }
будет всегда давать одно число ;-)
Надеюсь на вашу помощь!
Заранее благодарен!
Nox Noctis
08.07.2004, 18:40
http://www.flasher.ru/forum/showthread.php?threadid=60272&highlight=%E7%E0%EF%F0%E5%F9%E0%EB
Круто
зачем интересно это вдруг всем понадобилось?
if (x==2) { x=-2 }
else if (x==-2) { x=2 }
Инвертирование переменной уже пора выносить в фак ;-)))
Flash_MMX
08.07.2004, 19:11
Эт понятно, но меня интересует возможность не просто инвертирования *-1, а БИНАРНЫЙ ПЕРЕКЛЮЧАТЕЛЬ с задаваемыми значениями...
Типа задаём два числа X=1 и Y=1000. Вызываем функцию получаем - F=1, вызываем - F=1000, вызываем - F=1, вызываем - F=1000 .......
я же написал
или тебе по какой то причине так не подходит?
Flash_MMX
08.07.2004, 19:19
Мне нужно КОРОЧЕ. В одну строку. :)
(Просто эта бадяга будет делаться хз сколько раз в секунду, поэтому надо её максимально упростить(ускорить).) ;)
Nox Noctis
08.07.2004, 19:19
Оригинал написал(а) Flash_MMX
Эт понятно, но меня интересует возможность не просто инвертирования *-1, а БИНАРНЫЙ ПЕРЕКЛЮЧАТЕЛЬты во-первых изначально про это ничего не сказал, а во-вторых похоже не очень понимаешь что такое переключатель :))
переключатель - это вкл и выкл.
всё.
flag = 0;
trace(flag);
flag = !flag;
trace(flag);
flag = !flag;
trace(flag);
flag = !flag;
trace(flag);
...вот это переключатель.
а для чего ты его будешь использовать - твоё личное дело :)
я бы сделал как-то так.
values = [123, 345];
_global.flag = 0;
toggle = function () {
_global.flag = !flag;
return values[Number(flag)];
};
this.onMouseDown = function() {
trace(toggle());
};
ival=[1,1000]
n=0
switcher=function(){return ival[n++%2]}
for(i=0;i<5;i++)trace(switcher())
Зы: то же самое ( не видел, что уже есть)
Flash_MMX
08.07.2004, 19:31
Nox Noctis
ты во-первых изначально про это ничего не сказал,
Э.. ну да, признаюсь, не сказал... зато написал: ;)
Числа могут быть любыми 2-3, 10000-1, и т.д. Да и вообще это могут быть не числа, но любой пригодный флаг для On/Off или 1/-1.)
а во-вторых похоже не очень понимаешь что такое переключатель :))
переключатель - это вкл и выкл.
Не надо мои фразы обрывать :-/ Я написал:
БИНАРНЫЙ ПЕРЕКЛЮЧАТЕЛЬ с задаваемыми значениями...
Всем
Всем за варианты спасибо, но как я уже писал в начале темы, и раз уж ВЫ СТОЛЬ НЕВНИМАТЕЛЬНЫ - мне нужно В ОДНУ СТРОКУ. Остальные варианты я и сам знаю, ....
P.S.
А ты это заметил, NoxNoctis? ;)
2Flash_MMX : причем здесь СТРОКИ или ты полагаешь, что код записанный в одну строку работает бвстрее ? :D
Nox Noctis
08.07.2004, 19:45
а я тебе дал вариант не в одну строчку? (ты не заметил? :) )
вариант первый:
var result = (["раз-раз", "два-два"][Number(flag=!flag)])
вариант второй:
var result = (flag=!flag) ? ("раз-раз") : ("два-два");
...можно хоть весь свой код записывать в одну строчку. и радоваться тому какой он читабельный.
"бинарным переключателем" как правило называют один бит, который инвертируют бинарной операцией при необходимости. то есть тот же самый вкл и выкл только в бинарном представлении...
Только не воспринимай это как 6 строчек
x = 2;
trace(x);
x = (x==2)?-2:2;
trace(x);
x = (x==2)?-2:2;
trace(x);
"бинарным переключателем" как правило называют один бит, который инвертируют бинарной операцией при необходимости. то есть тот же самый вкл и выкл только в бинарном представлении...
А что делать если этот бит равен 1024???
Nox Noctis
08.07.2004, 19:59
Елё, я разочарован...x=2, trace(x), x=(x == 2) ? -2 : 2, trace(x), x=(x == 2) ? -2 : 2, trace(x);русским же языком сказано - В ОДНУ СТРОЧКУ! :D
Nox Noctis
08.07.2004, 20:00
Оригинал написал(а) Елё
А что делать если этот бит равен 1024??? вообще-то бит равен либо 0 либо 1 :)) только тссс... :))))
Оригинал написал(а) Nox Noctis
вообще-то бит равен либо 0 либо 1 :)) только тссс... :))))
Это он в обычных условиях 0 и 1. А в военное время его значение может достичь критических величин ;-)
Flash_MMX
08.07.2004, 21:39
NoxNoctis
1. "Бинарный" - значит имеющий два положения. Это ты умничка, это ты знаешь. Хоть по головке погладь. А вот то, КАКИЕ ЗНАЧЕНИЯ принимают эти два положения - это и есть "бинарный переключатель с заданными значениями"... ну да это явно выше вашего уровня... эт ж всё же всего-лишь flash... ;)
2. Любой думающий программер тебе объяснит, что "в одну строку" - означает "в одну функцию/выражение/операцию", а не физическое кол-во строк.
Вобщем если в Flash нет подобного переключателя - упс...
Flash как был недоделанным гнусмом, так им и остаётся.
Товарищ похоже слепой, не умеющий читать, не понимающий юмора но очень крутой
мне особенно вот это понравилось:
if (x==2) { x=-2 }
if (x==-2) { x=2 }
будет всегда давать одно число ;-)
Насколько я понимаю в крутых языках это дает разные числа
switcher=function(){return (n=!n) ? 1 : 1000}
Flash как был недоделанным гнусмом, так им и остаётся
я так и понял чего тебе нужно-то было : встроеный переключатель между 1 и 1000? :rolleyes:
интересно где такие есть
silin, у тебя (n=!n) всегда будет false
n = false; /* кто мне скажет, что в C, к примеру, можно обойтись без
инициализации, в того я первого брошу камень*/
function a(){n=!n;return (n) ? 1 : 1000;} // собственно говоря, строка =)
//тестируем переключатель
trace (a());
trace (a());
trace (a());
trace (a());
trace (a());
trace (a());
2Dindin: не будет (в смысле будет, но акурат через раз)
хотя согласен, что это бардак, но товарищ очень уж просил что именно без инициализации - как в крутых языках :D :D
silin, сорь, я сам баклан =)
Nox Noctis
09.07.2004, 02:34
Оригинал написал(а) Flash_MMX
это и есть "бинарный переключатель с заданными значениями"...а маленькое зелёное существо живущее под землёй, и жующее по ночам камни называется маленьким зелёным подземным ночным камнеедом.
Оригинал написал(а) Flash_MMX
да это явно выше вашего уровня... эт ж всё же всего-лишь flash... ;)так и я о том же! гораздо выше! :))
Оригинал написал(а) Flash_MMX
Любой думающий программер вот с этого места поподробнее... я таких видел. чес слово. а ты? :)))
Оригинал написал(а) Flash_MMX
Вобщем если в Flash нет подобного переключателя - упс...
Flash как был недоделанным гнусмом, так им и остаётся.покажи, пожалуйста, в каком языке такое есть. м? обещаю сразу после этого надеть рубище, посыпать голову пеплом, и удалиться в ближайший монастырь. (женский)
Flash_MMX
09.07.2004, 11:30
Забавно вобще.
Я задал вопрос.
Вы мне наотвечали какой-то х*рни.
А теперь довольные своей дурью и невнимательностью требуете чтобы я сам ответил на свой вопрос.
А хо-хо не хо-хо?
Nox Noctis
09.07.2004, 12:03
вопрос:
Подскажите, пожалуйста, как сделать переключатель в одну строку.
То есть: из "2" получить "-2", а при повторном прохождении этой строки обратно получить "2", и т.д. до бесконечности.
(Числа могут быть любыми 2-3, 10000-1, и т.д. Да и вообще это могут быть не числа, но любой пригодный флаг для On/Off или 1/-1.)
ответы выше, причем МНОГО. и все отвечают именно на поставленный вопрос. но ты ведь не хочешь слушать.. и не можешь сформулировать что тебе было нужно.
Оригинал написал(а) Flash_MMX
Забавно вобще.вот с этим нельзя не согласиться.
как перейдешь в категорию программеров, или даже в категорию "думающих программеров" (хотя шансов, понимаю, мало) - обращайся.
кстати ты не ответил на этот свой мега-выпад
Вобщем если в Flash нет подобного переключателя - упс...
Flash как был недоделанным гнусмом, так им и остаётся.- а где такое есть?
если ты с таким упорством настаиваешь на том что "бинарный переключатель с заданными значениями" - это якобы такой специальный термин особый, то уж объясни откуда ты его взял? м? а то получается что ты ПРИДУМАЛ какую-то штуку, которая по-твоему непременно должна здесь быть, и пытаешься нам доказать что она таки должна быть.
А чем бинарный бит отличается от простого (небинарного)??
Оригинал написал(а) dimarik
А чем бинарный бит отличается от простого (небинарного)??
По моему он просто издевается. Ему задают вопрос - а он на него вопросом отвечает. Да еще и не в тему.
Nox Noctis
09.07.2004, 12:25
бит - это всегда бит. просто когда говорят "бинарный", это подчеркивает что речь идет в данный момент о работе с бинарным представлением числа.
greyshaman
09.07.2004, 13:05
[i]покажи, пожалуйста, в каком языке такое есть. м? обещаю сразу после этого надеть рубище, посыпать голову пеплом, и удалиться в ближайший монастырь. (женский) [/B]
Nox, в общемто вопрос конечно не ко мне, тока из благих побуждений , если надобна помощь в отправке по направлению в монастырь, обращайся.
Осталось тока вспомнить кто умеет работать с произвольными стеками, и описывать команду одним словом :)
Nox Noctis
09.07.2004, 13:22
гыгыг :)))
a = ["one", "two"];
toggle = function () {
return a[a.unshift(a.pop())-1];
};
одна строчка :))
greyshaman
09.07.2004, 14:12
a = ["one", "two",0];
trace(a[a[2]=int(!a[2])]);
trace(a[a[2]=int(!a[2])]);
Nox Noctis
09.07.2004, 14:17
всё равно есть флаг...
какая разница где флаг хранить в принципе :)
greyshaman
09.07.2004, 14:40
тормознул, ты a[1] возвращаешь
Nox Noctis
09.07.2004, 14:43
ээ.. кто тормознул? что тормознул? :)
я возвращаю всегда а[1] просто сам массив всё время местами переставляю...
greyshaman
09.07.2004, 15:13
угу оно понятно, первый вызов и возвращает "one" что нескольки смущает :)
брать
Оригинал написал(а) Nox Noctis
var result = (flag=!flag) ? ("раз-раз") : ("два-два");
остальное извращение,
самое толстое из них по времени, это;
a = ["one", "two"];
toggle = function () {
return a[a.unshift(a.pop())-1];
Nox Noctis
09.07.2004, 15:19
да естессно таких извращений не нужно никому :)
брать иф и не путаться :))
trace(a = (a == 1 ? 2 : 1));
числа могут быть любыми.
greyshaman
09.07.2004, 23:35
2BitSky: Гребешь, оченьно сильно гребешь
хм..
что ты имеешь ввиду?
я по жизни туповат.. нельзя ли обычным текстом?
Flash_MMX
10.07.2004, 13:54
NoxNoctis
Если ты не в состоянии понять разницу между "бинарным переключателем" и "значениями, которые принимают положения бинарного переключателя"(два любых значения)... собалезную...
Но я попробую тебе объяснить, что "бинарный переключатель" не обязательно должен принимать значения (1/0), это лишь логика самого переключателя - означающая, что у него лишь два положения. А принимать эти положения могут совершенно любые значения.... это и есть "бинарный переключатель с заданными значениями" (касательно происхождения термина не в курсе, но не я один так его называю)...
И я тя очень прошу - ежели прочесть внимательно не смог, если не знаешь каких-либо терминов, то не надо выпендриваться, не надо демонстрировать своё безмерное знание Flash, ибо на взгляд вопрошающего ты несешь ПОЛНУЮ ЧУШЬ! :-/
Всё, тема закрыта.
Спасибо всем, кто пытался помочь. Некоторые варианты очень прикольные! :)
Nox Noctis
10.07.2004, 14:01
ты несешь ПОЛНУЮ ЧУШЬ! :-/точно-точно.
Оригинал написал(а) Flash_MMX
NoxNoctis
Если ты не в состоянии понять разницу между "бинарным переключателем" и "значениями, которые принимают положения бинарного переключателя"(два любых значения)... собалезную...
Но я попробую тебе объяснить, что "бинарный переключатель" не обязательно должен принимать значения (1/0), это лишь логика самого переключателя - означающая, что у него лишь два положения. А принимать эти положения могут совершенно любые значения.... это и есть "бинарный переключатель с заданными значениями" (касательно происхождения термина не в курсе, но не я один так его называю)...
И я тя очень прошу - ежели прочесть внимательно не смог, если не знаешь каких-либо терминов, то не надо выпендриваться, не надо демонстрировать своё безмерное знание Flash, ибо на взгляд вопрошающего ты несешь ПОЛНУЮ ЧУШЬ! :-/
Всё, тема закрыта.
Спасибо всем, кто пытался помочь. Некоторые варианты очень прикольные! :)
1) Если ты не понял - Nox здесь модератор, а поэтому в этой ветке - он всегда прав.
2) вследствие пункта первого - решать кто тут несёт чушь - тоже ему.
3) Впрочем, и ветки закрывать тоже вправе только модератор.
В каждом форуме (еще с фидошки началось) есть:
1) модераторы - непререкаемые авторитеты с "плюсомётом"
2) местные авториты - к их мнению стоило бы пришлушаться
3) свой набор терминов, зачастую не совсем стандартный - и не зная этой терминологии не стоит пытаться что-то кому-то доказывать
4) негласный свод правил, не следовать которым - просто дурной тон.
Короче говоря - в чужой монастырь со своим уставом не ходят.
Flash_MMX
10.07.2004, 15:13
Dindin
Отвечу кратко:
1. Везде прав тот, кто прав. А не тот, кто тут "местный Х".
2. С тупыми шестерками беспредметные разговоры не веду. ;)
Nox Noctis
11.07.2004, 01:35
Диньдинь, что за блатная постановка вопросов? :)
не ожидал... глупость не подавить авторитарно.
2Flash_MMX
глупость - это не навсегда. тупое упрямство - тоже.
за сим прошу меня простить. [+]
1) Если ты не понял - Nox здесь модератор, а поэтому в этой ветке - он всегда прав)))
2) вследствие пункта первого - решать кто тут несёт чушь - тоже ему)))
:D :D :D :D :D :D :D :D :D
P.S. Поднимите меня))) встать от смеха немогу : )
Nox Noctis
11.07.2004, 01:43
ну вот, Динь, ты всё испортил.... я ведь прав в этой ветке ДАЛЕКО НЕ ПОТОМУ что модератор
я ведь прав в этой ветке ДАЛЕКО НЕ ПОТОМУ что модератор
А вот это правильно ) знание это есть ВЕЛИКАЯ сила ) а не выше стоящие звание )
P.S. :)
As you wish - Как Вы желаете.
Dindin ты начинаеш меня беспокоить , с каких это пор ты в рыбешки записался?
ты ведь был такой крутой АКУЛОЙ в океане флеша .
ты ведь опытный веб-дизайнер , институт блин закончил, где твоя гордость , а теперь что .............
P.S. на вот выпей эту таблетку может поможет)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.