在用Ruby编程时,我经常会遇到如下的作业test=some_functionifsome_function有了这个赋值,我想分配一个函数的输出,但如果它返回nil我想保留变量的内容。我知道有条件赋值,但是||=和&&=都不能在这里使用。我发现描述上述语句的最短方式是test=(some_functionortest)是否有更好/更短的方法来做到这一点? 最佳答案 我认为没有什么比您显示的最后一个片段更好的了,但请注意或用于流量控制,请改用||:test=some_function||test通常最好为新名称分配新值,生成的代码更易
我有@obj.items_per_page,即20一开始,我希望下面的方法仅在many_items时才为其赋值不是nil:deffetch_it_baby(many_items=nil)@obj.items_per_page=many_items使用上面的代码,即使many_items是nil,@obj.items_per_page保持在20.为什么?那是“好的”编码吗?我不应该使用类似的东西吗@obj.items_per_page=many_items||@obj.items_per_page或者有第三种方法吗?我对这两种方式都不太满意。 最佳答案
在Kotlin中,我只想在另一个变量不为null的情况下进行赋值(否则,没有操作)。我可以想到两种简洁的方式:funmain(args:Array){varx:Int?=nullvarn=0//...dosomething...x?.let{n=it}//method1n=x?:n//method2}但是,考虑到我必须执行它们的频率,它们感觉不够简洁。第一种方法似乎有点矫枉过正。第二种方法是在?:.之后要求一个表达式。我怀疑一定有更好的方法,比如n=?x?还是n=x??有吗? 最佳答案 尝试infix来'模拟自定义中缀操作'//de
在Ruby上有这样的东西:@var||='value'基本上,这意味着只有在@var尚未分配时(例如,如果>@var为nil)我正在Kotlin上寻找相同的东西,但到目前为止,最接近的是elvis运算符。有没有类似的东西,我错过了文档? 最佳答案 我能想到的最短的方法确实是使用猫王运算符:value=value?:newValue如果您经常这样做,另一种方法是使用delegatedproperty,仅在其null:时存储该值classOnce{privatevarvalue:T?=nulloperatorfungetValue(th