如果我的 case 语句的任何分支被调用,我可以设置一个变量吗?
Can I set a variable if any branch of my case statement is called?
我正在使用 Ruby 2.4。我有一个案例陈述
case var1
when cond1
# do stuff
when cond2
# do stuff
...
end
如果调用了任何 "when" 语句,我想设置一个变量 "condition_called = true",否则将该变量保留为 false。除了添加
之外还有什么方法可以做到这一点
condition_called = true
在我的案例陈述的每个分支中?
一个解决方案可能是
condition_called = true
case var1
when cond1
# do stuff
when cond2
# do stuff
else
condition_called = false
end
显然,现在您无法判断是否触发了 else 语句,但它会告诉您是否触发了 when
语句。
有关 Ruby case
的更多信息:http://www.techotopia.com/index.php/The_Ruby_case_Statement
关于 Ruby case
语句要记住的一件事是 return 值。如果您可以保证您的每个子句 return 都是 真实的 ,而不是 nil
或 false
,那么您可以依赖于该行为:
condition_called =
case ...
when ...
f(a)
when ...
g(b)
end
只要你从这些不同的操作中得到结果,这就非常无缝了。
我正在使用 Ruby 2.4。我有一个案例陈述
case var1
when cond1
# do stuff
when cond2
# do stuff
...
end
如果调用了任何 "when" 语句,我想设置一个变量 "condition_called = true",否则将该变量保留为 false。除了添加
之外还有什么方法可以做到这一点condition_called = true
在我的案例陈述的每个分支中?
一个解决方案可能是
condition_called = true
case var1
when cond1
# do stuff
when cond2
# do stuff
else
condition_called = false
end
显然,现在您无法判断是否触发了 else 语句,但它会告诉您是否触发了 when
语句。
有关 Ruby case
的更多信息:http://www.techotopia.com/index.php/The_Ruby_case_Statement
关于 Ruby case
语句要记住的一件事是 return 值。如果您可以保证您的每个子句 return 都是 真实的 ,而不是 nil
或 false
,那么您可以依赖于该行为:
condition_called =
case ...
when ...
f(a)
when ...
g(b)
end
只要你从这些不同的操作中得到结果,这就非常无缝了。