如果整数是质数,则以下方法应返回true
,如果不是,则返回false
。有人可以向我解释true
的位置如何正确吗?我很难理解每个闭包(end
)如何关闭每个块以及为什么将true
放置在正确的位置。
这是我要完成课程的实验室。我知道代码有效,但是我不确定为什么。
def prime?(value)
if value <= 1 || value == 0 || value == 1
return false
elsif
(2..value - 1).each do |i|
if value % i == 0
return false
end
end
end
true # <= need explanation
end
prime?
对于素数整数应返回true
,对于非素数整数应返回false
。
答案 0 :(得分:2)
我已经重新格式化了这段代码,以使end
闭包具有良好的缩进性:
def prime?(value)
if value <= 1 || value == 0 || value == 1
return false
elsif
(2..value - 1).each do |i|
if value % i == 0
return false
end
end
end
true # <= need explanation
end
我想您对if
部分和elsif
及其结尾ture
都很困难。
如果没有显式的return
,Ruby方法将返回其最后一个表达式的值。这样,当且仅当我们错过了true
分支并经过if
分支而未激活elsif
时,才返回最后一个return false
。
什么时候会发生?如果value
是质数,则当然它会首先落入elsif
分支,然后检查每个小于它的数,看是否可以被它们整除。
一旦所有试验失败,elsif
分支便会结束,我们将遇到最后一个true
表达式。