首页 > 解决方案 > 练习 一个范围的总和 eloqent java

问题描述

做什么

step = start < end ? 1 : -1

在这个函数中是什么意思?它来自名为 Eloquent Java 的书的答案,我不知道函数值上下文中的问号和冒号是什么意思

function range(start, end, step = start < end ? 1 : -1) {
  let array = [];

  if (step > 0) {
    for (let i = start; i <= end; i += step) array.push(i);
  } else {
    for (let i = start; i >= end; i += step) array.push(i);
  }
  return array;
}

function sum(array) {
  let total = 0;
  for (let value of array) {
    total += value;
  }
  return total;
}

console.log(range(1, 10))
// → [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
console.log(range(5, 2, -1));
// → [5, 4, 3, 2]
console.log(sum(range(1, 10)));
// → 55

标签: javascripthtml

解决方案


这称为三元运算。

它是一个等效于 if-else 语句的单行语句。

step = start < end ? 1 : -1

和说的一样

if(start < end)
    step = 1;
else
    step = -1;

格式看起来像这样

variable = (condition) ? true_value : false_value;

推荐阅读