【问题标题】:Simple ruby syntax if statement. Is this possible?简单的 ruby​​ 语法 if 语句。这可能吗?
【发布时间】: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


【解决方案1】:

我会使用include? 使其更具可读性:

if ([3,5,7].include?a and b == 2 and [5,6].include?c and [8,9,0].include?d)

【讨论】:

  • 谢谢... .include?d 还是 .include?(d)
【解决方案2】:

您应该根据您的逻辑正确添加括号。像这样,

((a == 3 || a == 5 || a == 7) && (b == 2) && (c == 5 || c == 6) && (d == 8 || d == 9 || d == 0))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-01
    • 2020-02-22
    • 2022-12-03
    • 2015-04-11
    • 1970-01-01
    • 2019-03-17
    • 2022-01-26
    • 1970-01-01
    相关资源
    最近更新 更多