使用if语句的Ruby链接方法

时间:2014-11-27 11:22:16

标签: ruby methods chaining

我有以下内容:

def method(integer)  
  a = 3+integer
  a += 10 if "one"<"another"
end

我可以用链接方法以某种方式将它写在一行吗?

a = 3+f += 10 if "one"<"another"

之类的东西

3 个答案:

答案 0 :(得分:2)

您可以使用三元运算符在一行中执行此操作:

def method(integer)  
  a = integer + ("one"<"another" ? 13 : 3)
end

但是,确保在执行此操作时不会损害代码的可读性。

答案 1 :(得分:0)

a= 3+ integer + ("one"<"another" ? 10 : 0)

3+ integer会将3添加到integer值,如果条件为真,则("one"<"another" ? 10 : 0)将返回10,否则将返回0.

答案 2 :(得分:0)

由于and&&都使用short-circuit evaluation,您可以使用:

(a = 3+integer) and ("one"<"another") and  (a += 10) 

它在'Using “and” and “or” in Ruby'中说:

  

可用于将相关操作链接在一起,直到其中一个返回nil或false

     

另一种思考的方法是作为反向if语句修饰符