【发布时间】:2012-11-03 11:28:56
【问题描述】:
在使用 Ruby 编程时,我经常会遇到如下任务
test = some_function if some_function
通过该分配,我想分配一个函数的输出,但如果它返回nil,我想保留变量的内容。我知道有条件赋值,但||= 和&&= 都不能在这里使用。我发现描述上述陈述的最短方式是
test = (some_function or test)
有没有更好/更短的方法来做到这一点?
【问题讨论】:
-
这很重要,因为直到最近我才使用第一个版本,并且对函数进行了两次评估。因此第二个版本更好。由于我必须在我的代码中替换第一个版本,我只是想确保用处理这个问题的最佳方式替换它 - 或者可能是最佳实践。
-
对我来说,这个问题值得提出,因为我得到了一个答案,它告诉我关于这个简单表达我不知道的三件事。首先,使用
||而不是or。其次,考虑使用presence。第三,考虑功能方法。这超出了我的预期。