- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
// Flash vars come in as strings. We need them as booleans.
private function _convertToBoolean(value:*):Boolean {
switch(value) {
case "1":
case 1:
case "true":
case "yes":
case "on":
return true;
case "0":
case 0:
case "false":
case "no":
case "off":
case "undefined":
default:
return false;
//default:
//return Boolean(value);
}
}
2. Но если по каким-то причинам очень хочется изобрести что-то новое и необычное:
Естесственно, массив закешировать, а не создавать по-новой. Пример он на то и пример, чтобы быть коротким. Тут еще плохо то, что неожиданно для людей, которые привыкли, что любое не пустое значение строки будет приведено к true, делается все наоборот. Ну и естесственно 7 лишних кейсов, как минимум.
А этот самый плеер можно целиком сюда выкладывать. Просто скучно немного будет, но он в целом выдержан в духе и стиле подходящем под местные правила.
Второй вариант да, само собой, я именно ожидал увидеть что-то простое и легкое вроде первого, но ведь оно работать не будет :(
Да, по поводу "работать не будет" - так а код в примере вообще ахинею какую-то делает. Мой вариант - это сокращение этой ахинеи до одной строчки. А про полезность я отдельно написал, что метод новый и необычный.
Нормальный человек даже задумываться не будет о том, чтобы прочитать документацию о таком моменте. Это базисная вещь языка, которую абсолютно нет смысла переопределять. То, что тут сделано, это примерно то же самое, как переопределить отнимание, и заменить его прибавлением...
Так это и есть ожидаемый результат. А то, что тут слепили работает непредсказуемо. Для предполагаемо тупых пользователей существует документация по языку и классу Boolean в том числе.
В контексте же строки браузера выглядит нелогично.
Сравни:
http://example.org/foo.swf?autoplay=true
http://example.org/foo.swf?autoplay=false
Что ожидаешь от каждого урла? И причем тут тупые пользователи? Они вообще не должны лезть в документацию по языку, на котором у них продукт написан. Они лезут в документацию по продукту. А там написано то, что написали вы. И это должно выглядеть логично.
И не нужно угадывать, а что будет если
http://example.org/foo.swf?noautoplay
например. Но я все равно против этого варианта, т.к. нельзя всегда все указывать явно. Видимо, это во мне питонщик говорит.
Приходит больной к врачу:
-- Врач, мне больно, когда я так делаю!
(зажмурившись от отвращения) -- Больной, перестаньте так делать!
Вы сами себе пытаететсь создать идиотскую проблему (а вас никто не заставляет), и потом придумываете такое же решение.
Проблема многих (сам страдаю зачастую) программистов в том, что они заперты в своем маленьком мирке и часто не выходят даже за пределы реалий одного языка, который они чаще всего (или в конкретной реализации) используют. Именно поэтому есть еще и developer relations, которые могут повлиять на такой вот стиль программистов и сделать пользование продуктом удобным.
wvxvw, с тобой интересно говорить на разные темы, но конкретно в этой ветке я думаю, мы ничего нового друг для друга уже не откроем и мнение не изменим. За сим, предлагаю дискуссию свернуть ;)
это вам не похапе!