Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: While + switch + brek
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » While + switch + brek

Страниц (1): [1]
 

1. ekkl - 02 Ноября, 2013 - 21:52:31 - перейти к сообщению
Извините, если я не сумел найти. Думаю не стоит создавать новую тему для данного вопроса.
Сразу скажу, реализация на Node.js
Итак, если цикл While в нём switch. Есть условие в switch, при котором нужно выйти из While. Break, конечно выходит из switch. С метками не помогает, насколько я понял, прыжок вперед невозможен.
Рассматриваю реализацию через throw
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function compile(file) {
  3.         try{
  4.                 JQL = NewJQL(file);
  5.                 while (JQL.next()!==false)      {
  6.                         if (JQL.is_line()) {
  7.                                 switch (true)
  8.                                 {
  9.                                 case (JQL.test(/^\s*\/\//)):
  10.                                         debug ('comment detect:' + JQL.__line);
  11.                                         JQL.pushblank();
  12.                                         break;
  13.                                 case (JQL.test(/^\s+/)):
  14.                                         debug('Column detect: ' + JQL.__line);
  15.                                         //JQL.push(JQL.getblank(), true);
  16.                                         process_column();
  17.                                         break;
  18.                                 case(JQL.is_endtable()):
  19.                                         jql_close();
  20.                        
  21.                                 //NO break!! This lines must be run for two conditions!!!
  22.                                 case(JQL.test(/^[a-zA-Z]/)):
  23.                                         debug('Begin table detect: '.bold + JQL.table().bold);
  24.                                         jql_create();
  25.                                         JQL.push('  id int (11) unsigned NOT NULL AUTO_INCRENENT,');
  26.                                 }
  27.                         }
  28.                 }
  29.         }      
  30.         catch(e)
  31.         {
  32.                 JQL.push('// ' + e);
  33.                 console.log(e);
  34.         }
  35.         finally {
  36.                 jql_close();
  37.                 savedata(file);
  38.         }
  39. }

Может так лучше? Если нет, подскажите как.
ПС. выход должен быть в случае Фальзе некоторых функций jql_create();process_column();jql_close();
2. OrmaJever - 02 Ноября, 2013 - 21:59:18 - перейти к сообщению
ekkl пишет:
Рассматриваю реализацию через throw

Рассмотрели, поддержали, согласны. В данном случает throw уместен.
3. nerv - 03 Ноября, 2013 - 00:05:20 - перейти к сообщению
убрать ненужный switch
4. Champion - 03 Ноября, 2013 - 11:23:29 - перейти к сообщению
А с меткой почему не работает?

 

Powered by ExBB FM 1.0 RC1