RUBY:仅当功能不返回零时,分配输出



在Ruby中编程时,我经常有以下作业

test = some_function if some_function

使用该分配,我想分配一个函数的输出,但是如果它返回nil,我想保留变量的内容。我知道有条件分配,但是||=&&=都不能在此处使用。我发现描述上面陈述的最短方法是

test = (some_function or test)

是否有更好的/较短的方法?

我认为没有什么比您显示的最后一个片段更好,但请注意,or用于流量控制,而是使用||

test = some_function || test

通常最好将新值分配给新名称,结果代码更容易理解和调试,因为变量/符号在整个范围内具有相同的值:

some_different_and_descriptive_name_here = some_function || test

我只添加括号

(a = b) unless b.nil?

(a = b) if b

较低

请记住,这将评估B两次,因此,如果B是具有副作用的函数(例如更改变量在其范围或打印之外),它将完成两次;为了避免这种情况,您必须使用

temp = b; (a = temp) unless temp.nil?

(当然可以分为)

temp = b

(a = temp) unless temp.nil?

最新更新