我正在寻找一种更优雅的方法来完成这个任务:
如果我只想在它已经为nil的情况下才更改它,我可以这样做:
my_var = nil if my_var == 2
目前我必须重复两次my_var
,这看起来不太好。
如果my_var
是来自哈希表的键,则变得更加丑陋:
my_hash[:my_key] = nil if my_hash[:my_key] == 12
如果我只想在它已经为nil的情况下才更改它,我可以这样做:
my_var ||= 2
这样做更加简洁。
如果一个变量等于某个值,有更好的方法改变它的值吗?
my_var = nil if my_var == 2
这句代码几乎和盛开的郁金香田一样难看。变量的值只能通过赋值来改变,所以为了实现所需结果而不重复my_var
,需要编写if xxxx; my_var = nil; end
或者my_var = yyyy
,其中表达式xxxx
和yyyy
不能包含对my_var
的引用。如果可以使用 缩写赋值 (x o= ...
, 其中o=
是+=
、|=
等符号的占位符) 来完成任务,那就更好了,但我不认为… - Cary Swoveland