Ruby:仅当函数不返回nil时才分配函数的输出

Flo*_*aus 8 ruby variable-assignment

在Ruby中编程时,我经常会有如下所示的分配

test = some_function if some_function
Run Code Online (Sandbox Code Playgroud)

使用该分配我想分配一个函数的输出,但如果它返回nil我想保留变量的内容.我知道有条件分配,但这里既||=不能&&=也不能使用.我发现描述上述陈述的最短路径是

test = (some_function or test)
Run Code Online (Sandbox Code Playgroud)

是否有更好/更短的方法来做到这一点?

tok*_*and 6

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

test = some_function || test
Run Code Online (Sandbox Code Playgroud)

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

some_different_and_descriptive_name_here = some_function || test
Run Code Online (Sandbox Code Playgroud)

  • 凭借多年的经验,我可以确认我的答案是错误的. (3认同)