有一段代码
A = "am"
F = "fm"
def fmam(n)
return if n == 0
loopy(n - 1)
case true
when n % 15 == 0
puts B + L
when n % 5 == 0
puts L
when n % 3 == 0
puts B
else
puts n
end
end
fmam(20)
在此代码中case true
执行此代码的内容是什么?
答案 0 :(得分:6)
case
有两种形式。您使用的表单会将case
关键字(在本例中为true
)后的“目标”与每个比较(每个when
关键字后面的部分)使用{{1}进行比较运算符。最后得到一系列布尔表达式,并执行第一个计算结果为===
的代码。因此,它是多余的,有点令人困惑。最好删除true
并使用第二种形式的true
:
case
这是做同样的事情,但更清楚。
答案 1 :(得分:3)
tutorialspoint
: - 说
case expression
[when expression [, expression ...] [then]
code ]...
[else
code ]
end
比较expression
指定的case
和使用===
运算符时指定的when
,并执行匹配的A = "am"
F = "fm"
L = "dd"
B = 'aa'
def fmam(n)
return if n == 0
case true
when n % 15 == 0
puts B + L
when n % 5 == 0 # this evaluates to true first, which then matched with true value mentioned in the case statement.
puts L
when n % 3 == 0
puts B
else
puts n
end
end
fmam(20) #=> dd
子句的代码。
说如下:
A = "am"
F = "fm"
L = "dd"
B = 'aa'
def fmam(n)
return if n == 0
case false
when n % 25 == 0 # this evaluates to false first, which then matched with false value mentioned in the case statement.
puts B + L
when n % 5 == 0
puts L
when n % 3 == 0
puts B
else
puts n
end
end
fmam(30) #=> aadd
现在看下面的代码:
{{1}}
答案 2 :(得分:0)
您可以将案例陈述重构为
msg = case 0
when n % 15
B + L
when n % 5
L
when n % 3
B
else
n
end
puts msg