Quiz. Условие без условия ключевое слово? - PullRequest
0 голосов
/ 23 марта 2012

Есть ли другой способ создания условного выполнения?

способ 1: очевидное использование «если»

    if(condition)
    {
      doThis();
    }
    else
    {
      doThat();
    }

способ 2: другой прямой подход с использованием "?"

(condition) ? doThis():doThat();

способ 3: используется «while»

  boolean test=condition;
  while(test) 
    {doThis(); break;}
  while(!test)
    {doThat(); break;}

способ 4: это использование "для"

  for(;condition;)   { doThis(); break; }
  for(;!condition;)  { doThat(); break; } 

способ 5: это с помощью «switch»

  switch(condition) { case 0: doThat();break; default: doThis();break;}

Есть еще идеи? Есть ли возможность выбора пути выполнения без ключевого слова условия?

Это должно быть сообщество вики

Ответы [ 7 ]

4 голосов
/ 23 марта 2012

Вы можете использовать логику быстрого доступа.

boolean b = (condition && doThis()) || (!condition && doThat());
2 голосов
/ 23 марта 2012

это бы сработало:

x.play();
alert("this gets alerted if x is defined and has a method play()");
1 голос
/ 23 марта 2012

Ява .. ты, э-э, ты просил об этом:

static class TrueException extends RuntimeException {}

static class FalseException extends RuntimeException {}

private static Map<Boolean, RuntimeException> map = new HashMap<Boolean, RuntimeException>();
static {
    map.put(true, new TrueException());
    map.put(false, new FalseException());
}

public static void main(String[] args) {
    try {
        throw map.get(condition);
    } catch (TrueException te) {
        doThis();
    } catch (FalseException fe) {
        doThat();
    }
}
1 голос
/ 23 марта 2012

Несколько способов, одним из способов является «загрузка» кода / подпрограммы в память некоторого типа (массив, вектор), а затем, в зависимости от действий пользователя, загрузите этот код и запустите его. Короткий псевдо-пример:

Скажем, вы программируете игру, где-то у вас есть что-то вроде этого:

if(IS_KEY_PRESSED_DOWN('A')) {
 //code to move left
}
if(IS_KEY_PRESSED_DOWN('D')) {
 //code to move right
}

Вместо этого вы можете создать карту / массив:

function moveLeft() {
  //move left
}
function moveRight() {
  //move left
}

actions['A'] = moveLeft;
actions['D'] = moveRight;

for(var key in keys_pressed) { 
  actions[key](); //there the variable "actions" is an array of functions.
}
1 голос
/ 23 марта 2012

При условии, что условие дает ноль или единицу:

typedef void (*fn)(void);
fn options[2] = { doThis, doThat };
(*option[condition]) ();
0 голосов
/ 23 марта 2012

Ну, вы могли бы иметь список меток и использовать печально известную инструкцию goto. И это индекс

goto labels[i]
0 голосов
/ 23 марта 2012

Вы можете использовать объектно-ориентированное поведение и полиморфизм для удаления условных операторов. Это может быть реализовано с любым количеством поведенческих шаблонов проектирования. State и Template Method - это два, которые я часто использую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...