我喜欢ruby的一件事是,它主要是一种非常易读的语言(非常适合自我记录的代码)
然而,受到这个问题的启发:Ruby Code解释
并描述了如何||=在ruby中工作,我正在考虑我不使用的ruby习语,坦率地说,我并没有完全理解它们.
所以我的问题是,类似于引用问题的例子,我需要注意哪些常见但不明显的红宝石成语才能成为一名真正熟练的红宝石程序员?
顺便说一句,从引用的问题
a ||= b
Run Code Online (Sandbox Code Playgroud)
相当于
if a == nil || a == false
a = b
end
Run Code Online (Sandbox Code Playgroud)
(感谢Ian Terrell的更正)
编辑:事实证明,这一点并非完全没有争议.事实上正确的扩张
(a || (a = (b)))
Run Code Online (Sandbox Code Playgroud)
请参阅以下链接了解原因:
感谢JörgWMittag指出这一点.
Ruby允许您为哈希定义默认值:
h=Hash.new(['alright'])
h['meh'] # => ["alright"]
Run Code Online (Sandbox Code Playgroud)
显示散列时会显示值的赋值,但修改后的默认值不会.在哪里'bad'?
h['good']=['fine','dandy']
h['bad'].push('unhappy')
h # => {"good"=>["fine", "dandy"]}
Run Code Online (Sandbox Code Playgroud)
'bad' 如果我们明确要求出现.
h['bad'] # => ["alright", "unhappy"]
Run Code Online (Sandbox Code Playgroud)
为什么在显示哈希时不会显示修改后的默认值?