打印出不在数组中的项目。红宝石

时间:2019-07-28 14:59:48

标签: arrays ruby

我试图对数组中的项目进行排序,但它会不断打印出不在数组中的项目。

def alphabetize(arr, rev=false)
  arr.sort!
  if rev == true
    puts arr.reverse!
  else
    puts arr
  end
end

numbers = [2, 5, 3, 16, 0, 322, -5]

puts alphabetize(numbers, true)

我希望输出是代码的第一行,但是它将输出三行。

[322, 16, 5, 3, 2, 0, -5]
34
["ants", "bees", "cockroaches"]

2 个答案:

答案 0 :(得分:0)

尝试从代码中删除看跌期权。

def alphabetize(arr, rev=false)
  arr.sort!
  if rev == true
    arr.reverse!
  else
    arr
  end
end

并从irb控制台运行:

irb

输出

2.3.4 :001 > def alphabetize(arr, rev=false)
2.3.4 :002?>     arr.sort!
2.3.4 :003?>     if rev == true
2.3.4 :004?>         arr.reverse!
2.3.4 :005?>       else
2.3.4 :006 >           arr
2.3.4 :007?>       end
2.3.4 :008?>   end
 => :alphabetize
2.3.4 :009 > numbers = [2, 5, 3, 16, 0, 322, -5]
 => [2, 5, 3, 16, 0, 322, -5]
2.3.4 :010 > alphabetize(numbers, true)
 => [322, 16, 5, 3, 2, 0, -5]
2.3.4 :011 > animals = ["bees", "cockroaches", "ants"]
 => ["bees", "cockroaches", "ants"]
2.3.4 :012 > alphabetize(animals)
 => ["ants", "bees", "cockroaches"]

有预期的输出吗?

答案 1 :(得分:0)

嗨,海伦,我想我找到了问题, 我认为它来自Codeacademy 如果您这样写,它将返回成功

TL; DR

错误的代码

def alphabetize(arr, rev=false)
  rev ? arr.reverse! : arr.sort!
end

正确的代码

def alphabetize(arr, rev=false)
  rev ? arr.reverse! : arr.sort!
end

numbers = [5, 1, 3, 8]
puts alphabetize(numbers)