在Ruby case条件中,我看不出布尔运算符AND和OR之间的实际区别.
例如,我想让用户输入句子:
sudo make me a sandwich
案件条件开始如下:
case user_selection when /sudo/ && /sandwich/
但是,如果用户输入:
make me a sandwich
条件将是满意的.
在这种情况下我的方法是重新排序条件:
case user_selection when /sandwich/ && /sudo/
但是,预先假定每次用户想要使用"sudo"时,他们会在响应中包含字符串"sandwich".但是,这在功能上与此无异:
case user_selection when /sudo/
我查找了Ruby条件的布尔运算符,但没有找到满意的答案.
你不能&&
在像这样的案例块中使用,因为when /sudo/ && /sandwich/
评估只是when /sandwich/
.
相反,您需要使用一个查找两个单词的正则表达式.一个简单的例子可能是:
case user_selection when /sudo.*sandwich/