Я прав в отношении этого логического метода? [Решаемые] - PullRequest
1 голос
/ 24 марта 2020

Я искал, как усовершенствовать движение в Java. Код, который я нашел, выглядел так:

public void update() {

    for (int i = 0; i < AMOUNT_KEYS; i++) {
        keysLast[i] = keys[i];  ////Sets buttons pressed this frame equal to the lastKey array
    }

    for (int i = 0; i < AMOUNT_BUTTONS; i++) {
        buttonsLast[i] = buttons[i];    //Sets buttons pressed this frame equal to the lastKey array
    }
}

//keys Methods
public boolean isKeyPressed(int keycode) {
    return keys[keycode];
}

public boolean isKeyUp(int keycode) {
    return !keys[keycode] && keysLast[keycode]; //Does not return 2 values, it returns true if these conditions are met?
}

public boolean isKeyDown(int keycode) {
    return keys[keycode] && !keysLast[keycode];
}

Мне было интересно, верна ли моя мысль об этом фрагменте, мое предположение прокомментировано рядом с ним:

public boolean isKeyUp(int keycode) {
    return !keys[keycode] && keysLast[keycode];  //Does not return 2 values, it returns true if these conditions are met?
}

public boolean isKeyDown(int keycode) {
    return keys[keycode] && !keysLast[keycode];
}

Мне кажется, что на мой взгляд что методы isKeyDown и isKeyUp возвращают 2 логических значения. Я думал, что это невозможно. Но я проверил это, и похоже, что он действует как оператор if? . Так что, если оператор после команды возврата верен, он вернет истину?

Я прав? Если так, то почему это так? Есть ли где-нибудь do c, где я могу прочитать об этом?

1 Ответ

1 голос
/ 24 марта 2020

Во-первых, ваш код компилируется? Следующее будет допустимо только в том случае, если ваши массивы вернут значение boolean.

return !keys[keycode] && keysLast[keycode];

И если keys [keyCode] имеет значение true, то! Keys [KeyCode] будет иметь значение false, а оператор вернет false, поскольку Остальная часть выражения не нуждается в оценке.

...