【发布时间】:2010-12-30 19:15:43
【问题描述】:
可能已经问过了,但我找不到它..这里有 2 种常见情况(对我来说,在编写 rails 时..)用 ruby 编写令人沮丧:
"a string".match(/abc(.+)abc/)[1]
在这种情况下,我得到一个错误,因为字符串不匹配,因此 [] 运算符在 nil 上调用。我想找到以下更好的替代方法:
temp="a string".match(/abc(.+)abc/); temp.nil? ? nil : temp[1]
简而言之,如果不匹配,则返回 nil 而不会出错
第二种情况是这样的:
var = something.very.long.and.tedious.to.write
var = something.other if var.nil?
在这种情况下,我只想将一些东西分配给 var,如果它不是 nil,如果它是 nil,我会分配 something.other..
有什么建议吗? 谢谢!
【问题讨论】:
-
好吧,我很累,我很抱歉第二个问题很愚蠢(是的,这是一个简单的 OR..),但第一个问题仍然很有趣..
-
其实第二个也很有趣。我暂时弄错了,因为我忘记了
or运算符的优先级。滥用or是一种很常见的失礼行为,值得强调。 -
这与这个问题非常相似:stackoverflow.com/questions/4371716/…