我知道你可以使用没有目标对象的case语句,如下所示:
case
when condition1
do_something1
when condition2
do_something2
else
do_something_else
end
这相当于:
if condition1
do_something1
elsif condition2
do_something2
else
do_something_else
end
是否有任何理由表达式允许在没有目标对象的情况下使用?是否有人想要以这种方式使用case表达式?
答案 0 :(得分:-1)
它可用于检查多个表达式。考虑这个例子:
print "Enter first string: "
some_string = gets.chomp
print "Enter second string: "
some_string1 = gets.chomp
puts case
when some_string.match(/\d/)
'String has numbers'
when some_string1.match(/[a-zA-Z]/)
'String has letters'
else
'String has no numbers or letters'
end
在这里,您必须检查两个不同的变量。也许专家们有不同的看法。
答案 1 :(得分:-1)
实际上没有区别,空case
语句不会拨打===
,因为无法呼叫。例如:
class CaseExample
def ===(other)
puts "received #{other}"
super(other)
end
end
当这样调用时:
case
when CaseExample.new()
puts "got here"
end
将打印:
"got here"
虽然:
case "me"
when CaseExample.new()
puts "got here"
end
它将打印:
"received me"
如果没有案件对象开始,我宁愿选择if/elsif
,因为意图会更清晰。