PDA

Просмотр полной версии : Переключатель в одну строку - как?


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

Елё
08.07.2004, 18:46
Круто
зачем интересно это вдруг всем понадобилось?

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 .......

Елё
08.07.2004, 19:15
я же написал
или тебе по какой то причине так не подходит?

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());
};

silin
08.07.2004, 19:20
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? ;)

silin
08.07.2004, 19:44
2Flash_MMX : причем здесь СТРОКИ или ты полагаешь, что код записанный в одну строку работает бвстрее ? :D

Nox Noctis
08.07.2004, 19:45
а я тебе дал вариант не в одну строчку? (ты не заметил? :) )

вариант первый:

var result = (["раз-раз", "два-два"][Number(flag=!flag)])

вариант второй:

var result = (flag=!flag) ? ("раз-раз") : ("два-два");


...можно хоть весь свой код записывать в одну строчку. и радоваться тому какой он читабельный.

"бинарным переключателем" как правило называют один бит, который инвертируют бинарной операцией при необходимости. то есть тот же самый вкл и выкл только в бинарном представлении...

Елё
08.07.2004, 19:50
Только не воспринимай это как 6 строчек
x = 2;
trace(x);
x = (x==2)?-2:2;
trace(x);
x = (x==2)?-2:2;
trace(x);

Елё
08.07.2004, 19:54
"бинарным переключателем" как правило называют один бит, который инвертируют бинарной операцией при необходимости. то есть тот же самый вкл и выкл только в бинарном представлении...

А что делать если этот бит равен 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 :)) только тссс... :))))

Елё
08.07.2004, 20:06
Оригинал написал(а) Nox Noctis
вообще-то бит равен либо 0 либо 1 :)) только тссс... :))))

Это он в обычных условиях 0 и 1. А в военное время его значение может достичь критических величин ;-)

Flash_MMX
08.07.2004, 21:39
NoxNoctis
1. "Бинарный" - значит имеющий два положения. Это ты умничка, это ты знаешь. Хоть по головке погладь. А вот то, КАКИЕ ЗНАЧЕНИЯ принимают эти два положения - это и есть "бинарный переключатель с заданными значениями"... ну да это явно выше вашего уровня... эт ж всё же всего-лишь flash... ;)
2. Любой думающий программер тебе объяснит, что "в одну строку" - означает "в одну функцию/выражение/операцию", а не физическое кол-во строк.

Вобщем если в Flash нет подобного переключателя - упс...
Flash как был недоделанным гнусмом, так им и остаётся.

Елё
08.07.2004, 21:48
Товарищ похоже слепой, не умеющий читать, не понимающий юмора но очень крутой

мне особенно вот это понравилось:
if (x==2) { x=-2 }
if (x==-2) { x=2 }
будет всегда давать одно число ;-)

Насколько я понимаю в крутых языках это дает разные числа

silin
08.07.2004, 21:50
switcher=function(){return (n=!n) ? 1 : 1000}
Flash как был недоделанным гнусмом, так им и остаётся
я так и понял чего тебе нужно-то было : встроеный переключатель между 1 и 1000? :rolleyes:
интересно где такие есть

Dindin
08.07.2004, 22:17
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());

silin
08.07.2004, 22:35
2Dindin: не будет (в смысле будет, но акурат через раз)
хотя согласен, что это бардак, но товарищ очень уж просил что именно без инициализации - как в крутых языках :D :D

Dindin
08.07.2004, 22:41
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
09.07.2004, 12:12
А чем бинарный бит отличается от простого (небинарного)??

Dindin
09.07.2004, 12:17
Оригинал написал(а) 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
да естессно таких извращений не нужно никому :)
брать иф и не путаться :))

Iv
09.07.2004, 22:31
trace(a = (a == 1 ? 2 : 1));

числа могут быть любыми.

greyshaman
09.07.2004, 23:35
2BitSky: Гребешь, оченьно сильно гребешь

Iv
10.07.2004, 00:13
хм..
что ты имеешь ввиду?
я по жизни туповат.. нельзя ли обычным текстом?

Flash_MMX
10.07.2004, 13:54
NoxNoctis

Если ты не в состоянии понять разницу между "бинарным переключателем" и "значениями, которые принимают положения бинарного переключателя"(два любых значения)... собалезную...
Но я попробую тебе объяснить, что "бинарный переключатель" не обязательно должен принимать значения (1/0), это лишь логика самого переключателя - означающая, что у него лишь два положения. А принимать эти положения могут совершенно любые значения.... это и есть "бинарный переключатель с заданными значениями" (касательно происхождения термина не в курсе, но не я один так его называю)...

И я тя очень прошу - ежели прочесть внимательно не смог, если не знаешь каких-либо терминов, то не надо выпендриваться, не надо демонстрировать своё безмерное знание Flash, ибо на взгляд вопрошающего ты несешь ПОЛНУЮ ЧУШЬ! :-/


Всё, тема закрыта.

Спасибо всем, кто пытался помочь. Некоторые варианты очень прикольные! :)

Nox Noctis
10.07.2004, 14:01
ты несешь ПОЛНУЮ ЧУШЬ! :-/точно-точно.

Dindin
10.07.2004, 14:05
Оригинал написал(а) 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
глупость - это не навсегда. тупое упрямство - тоже.

за сим прошу меня простить. [+]

D12
11.07.2004, 01:39
1) Если ты не понял - Nox здесь модератор, а поэтому в этой ветке - он всегда прав)))
2) вследствие пункта первого - решать кто тут несёт чушь - тоже ему)))

:D :D :D :D :D :D :D :D :D


P.S. Поднимите меня))) встать от смеха немогу : )

Nox Noctis
11.07.2004, 01:43
ну вот, Динь, ты всё испортил.... я ведь прав в этой ветке ДАЛЕКО НЕ ПОТОМУ что модератор

D12
11.07.2004, 01:47
я ведь прав в этой ветке ДАЛЕКО НЕ ПОТОМУ что модератор

А вот это правильно ) знание это есть ВЕЛИКАЯ сила ) а не выше стоящие звание )

P.S. :)

Dindin
11.07.2004, 16:05
As you wish

D12
11.07.2004, 17:29
As you wish - Как Вы желаете.


Dindin ты начинаеш меня беспокоить , с каких это пор ты в рыбешки записался?
ты ведь был такой крутой АКУЛОЙ в океане флеша .
ты ведь опытный веб-дизайнер , институт блин закончил, где твоя гордость , а теперь что .............


P.S. на вот выпей эту таблетку может поможет)