Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Вопрос Навскидку (http://www.flasher.ru/forum/showthread.php?t=207647)

ZackMercury 28.04.2014 19:03

in4core, после вашей темы уж точно никто не забудет.

caseyryan 28.04.2014 19:21

Цитата:

Сообщение от Aquahawk (Сообщение 1164785)
Хорошее понимание языка это оторвать руки за такую конструкцию.

Я бы так не сказал. Такие тесты помогают включить голову и вспомнить о таких тонкостях, о которых давно забыл (или узнать, если не знал). В книжке SCJP подобных примеров вагон, правда по джаве, но мне было интересно их прорешивать. Мозг временами вообще закипал)

Aquahawk 28.04.2014 19:37

Цитата:

включить голову и вспомнить о таких тонкостях, о которых давно забыл
Да это сам люблю, но в продакшн коде...

caseyryan 28.04.2014 19:47

так тут то речь не о продакшене

alexcon314 28.04.2014 22:31

Не знаю, что вы там насокращали и как в пример затесалась запятая, но этим вы испортили годную так-то задачку на внимание.
Я, например, в первую очередь обратил внимание именно на запятую, тем более, что она стоит не на месте. Потом, сам вопрос на тесте вряд ли звучал "сколько вам нужно секунд, чтобы увидеть косяк". Так что, дубль два :). Первый неуклюжий какой-то вышел.

in4core 29.04.2014 00:15

Вопрос стоял так : что неверно в коде? И вар ответов : цикл не выполнится, ошибка компиляции и т.п.

А вот кстати насчет запятой, в подаче :

Код AS3:

var c:Number = 0;
var d:Boolean = true;
while ( d )  c += 0.1 , if ( c == 10 ) d = false;

Да это даже не скомпилируется, НО - объясни тогда людям разницу кода

Код AS3:

var c:Number = 0;
var d:Boolean = true;
while ( d )  c += 0.1 , d = false;

Который скомпилируется :)
Почему в первом случае запятая не прокатит, а во втором вполне себе :) Раз она тебя так смутила

alexcon314 29.04.2014 09:21

А что тут объяснять? Глаз режет :).
В плане ошибок примерно следующий код вполне себе похож:
Код AS3:

foo = if (bar == 0) some = true;
// или
if( if (foo == bar) zobar = false) some = true;
// или
return if(foo > bar) some = true;

Правильно
Код AS3:

var c:Number = 0;
var d:Boolean = true;
while ( d )  c += 0.1 , d = ( c == 10 ) ? true : false;

а проще
Код AS3:

var c:Number = 0;
var d:Boolean = true;
while ( d )  c += 0.1 , d = ( c == 10 );


Zebestov 29.04.2014 10:34

Я, как и положено нубу, всегда (за редким исключением) перестраховываюсь и сравниваю возрастающие числа с помощью >=, а убывающие с <=, и никаких тонкостей знать не знаю (ну это я так, для красного словца).

in4core 29.04.2014 12:31

Zebestov - я приблизительно так и думал, что навскидку здесь люди путаются. Примечательно , что данный вопрос из простейших идет.

ZackMercury 29.04.2014 13:00

in4core, людям дано ошибаться :)


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

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