7

对于a = a || b, a = a && b, 有很好的语法糖a ||= b, a &&= b. 也经常出现的是:

a = b || a
a = b && a

有没有好的语法糖或写这个的简短方法?

4

2 回答 2

5
a = b || a

可以改写为:

a = b if b

可以在不重复ab的情况下重写

x = b and a = x

如果表达式ab都超过 6 个字符,x = b and a = x则为最短形式。

于 2012-11-28T11:47:25.133 回答
2

目前没有这样的捷径。

&&= 和 ||=在 CRuby/MRI AST 中是NODE_OP_ASGN_ANDNODE_OP_ASGN_OR 。仅当左值为 false 或 nil 时才评估“右值”。

于 2012-11-28T11:24:59.370 回答