我有以下内容:
def method(integer)
a = 3+integer
a += 10 if "one"<"another"
end
我可以用链接方法以某种方式将它写在一行吗?
像a = 3+f += 10 if "one"<"another"
?
答案 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语句修饰符