ruby函数在irb和repl.it中返回不同的布尔值

ruby函数在irb和repl.it中返回不同的布尔值,ruby,primes,irb,Ruby,Primes,Irb,我编写了以下函数来检查数字是否为素数: def is_prime?(number) arr = (2..number).to_a.select {|m| number % m == 0} arr.length == 1 ? true : false end 当在irb中传递4或9作为数字时,它正确地返回false。然而,在这些情况下,评估结果是正确的 下面是我在repl.it上运行的测试代码: puts("\nTests for #is_prime?") puts("=========

我编写了以下函数来检查数字是否为素数:

def is_prime?(number)
  arr = (2..number).to_a.select {|m| number % m == 0}
  arr.length == 1 ? true : false
end
当在irb中传递4或9作为数字时,它正确地返回false。然而,在这些情况下,评估结果是正确的

下面是我在repl.it上运行的测试代码:

puts("\nTests for #is_prime?")
puts("===============================================")
puts('is_prime?(2) == true: ' + (is_prime?(2) == true).to_s)
puts('is_prime?(3) == true: ' + (is_prime?(3) == true).to_s)
puts('is_prime?(4) == false: ' + (is_prime?(4) == false).to_s)
puts('is_prime?(9) == false: ' + (is_prime?(9) == false).to_s)
puts("===============================================")
其输出:

Tests for #is_prime?
===============================================
is_prime?(2) == true: true
is_prime?(3) == true: true
is_prime?(4) == false: true
is_prime?(9) == false: true
===============================================
What could be causing this variation?

我试了一下repl.it,结果4和9都是假的

总之,代码有两个小小的改进:-您可以直接在范围上调用
select
,而无需在数组中打开它 -您可以返回表达式本身的值,而不指定true和false

def is_prime?(number)
  arr = (2..number).select {|m| number % m == 0}
  arr.length == 1
end

我试了一下repl.it,结果4和9都是假的

总之,代码有两个小小的改进:-您可以直接在范围上调用
select
,而无需在数组中打开它 -您可以返回表达式本身的值,而不指定true和false

def is_prime?(number)
  arr = (2..number).select {|m| number % m == 0}
  arr.length == 1
end

您被测试的输出弄糊涂了,它报告了函数的预期结果,并且函数的实际结果是正确的(即,是测试预期的结果):


如果最右边的列包含所有“true”值,则函数通过了所有测试。

您被测试的输出搞糊涂了,测试的输出报告了函数的预期结果,并且函数的实际结果是正确的(即测试所预期的结果):


如果最右边的列包含所有“true”值,则该函数已通过所有测试。

能否“共享”repl.it会话?这是我看到的。这是指向我的repl.it会话的链接:您的repl正在按预期工作。即使4和9的计算结果为true,这是因为您正在检查它们是否为false。false==false是真的我已经将代码和repl的输出添加到问题中,并且还添加了一个到repl的链接。我这样做是因为SO希望问题能够独立存在,而不必阅读评论(实际上,评论可以随时删除)。你能“分享”你的repl.it会话吗?这是我看到的。这是指向我的repl.it会话的链接:您的repl正在按预期工作。即使4和9的计算结果为true,这是因为您正在检查它们是否为false。false==false是真的我已经将代码和repl的输出添加到问题中,并且还添加了一个到repl的链接。我这样做是因为这样做是希望问题能够独立存在,而不必阅读评论(实际上,评论可以随时删除)。