Как я могу преобразовать это выражение if в функцию стрелки? - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть функция с оператором if, которая говорит:

function reflect() {
    if (number_a >= 600) {
         ball_velocity_a = -ball_velocity_a }
    if (number_b >= 600) {
         ball_velocity_b = -ball_velocity_b
}}

и я пытаюсь преобразовать эту функцию в функцию стрелки

const deflect = () => number_a >= 600 ? ball_velocity_a = -ball_velocity_a : 

но я не уверен, что ставить после :, поскольку ball_velocity_b обусловлено number_b вместо number_a. Я действительно плохо знаком с функциями стрелок и был бы признателен за помощь в этом.

Ответы [ 3 ]

0 голосов
/ 01 сентября 2018
var deflect = () => { 
ball_velocity_a = number_a >= 600 ? -ball_velocity_a : ball_velocity_a;
ball_velocity_b = number_b >= 600 ? -ball_velocity_b : ball_velocity_b;
};
0 голосов
/ 01 сентября 2018

Я бы старался избегать использования глобальных переменных, жестко закодированных констант внутри вспомогательных функций и вводящих в заблуждение имен функций (вызывая отражение / отклонение, если на самом деле не происходит отражения / отклонения).

const adjustVelocityComponent = (velocity, position, maxPosition) => {
  if (position >= maxPosition) // probably also check if position <= 0
    return -velocity;
  return velocity;
};

ball_velocity_a = adjustVelocityComponent(ball_velocity_a, number_a, 600);
ball_velocity_b = adjustVelocityComponent(ball_velocity_b, number_b, 600);
0 голосов
/ 01 сентября 2018

Вы можете использовать оператор запятой для цепочки условий, также, поскольку у вас нет ветки else, нет смысла использовать троичный. Вот код, который соответствует вашей функции:

 const deflect = () => (
   number_a >= 600 && (ball_velocity_a = -ball_velocity_a),
   number_b >= 600 && (ball_velocity_b = -ball_velocity_b),
   undefined
 );

Но ИМО на самом деле намного хуже, чем ваша первоначальная функция.

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