【发布时间】:2015-07-24 15:45:02
【问题描述】:
我真的是编程新手,想知道这是否可行:
def lock(a,b,c,d)
if (a == 3 || a == 5 || a == 7 && b == 2 && c == 5 || c == 6 && d == 8 || d == 9 || d == 0)
"unlocked"
else
"locked"
end
如果不可能,为什么?
所以当我传入时:lock(3,1,1,1) 它应该被锁定。
我应该采取不同的做法吗?有没有更好的办法?
【问题讨论】:
-
逻辑 and 优先于逻辑 or 运算符,因此您需要括号。为了更好的可读性,我会选择:
[3, 5, 7].include?(a) && [2].include?(b) && [5, 6].include?(c) && [0, 8, 9].include?(d)。 -
另外,您需要两个
ends。一个用于def,一个用于if。 -
当然有可能(你问的是什么)。你只需要修复你的状况。请记住(或了解)
&&比||“更强”,所以a || b && c是a || (b && c),而不是(a || b) && c。 -
谢谢!做这么长的条件不好吗? @SergioTulentsev
标签: ruby if-statement syntax