Я переформатировал этот код, чтобы сделать закрытие 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
.
Методы Ruby будут возвращать значение своего последнего выражения, если нет явного return
.Так что последний true
будет возвращен тогда и только тогда, когда мы пропустили ветку if
и прошли через ветвь elsif
без активации return false
.
Когда это произойдетслучиться?Если value
- простое число, конечно, оно сначала попадет в ветвь elsif
, затем проверьте каждое число меньше его, посмотрите, делится ли оно на какое-либо из них.
Как только все испытания не пройдут,elsif
ветвь заканчивается, мы встретим последнее true
выражение.