我有一个很短的问题。是否可以这样初始化哈希:
row = {
:title => "row title",
:slug => row[:title].paremeterize
}
换句话说,我是否可以在自身内部引用一个初始化的哈希值或者我必须这样做:
row = {
:title => "row title"
}
row[:slug] = row[:title].paremeterize
谢谢你的评论。当然,这段代码不能工作。我问是否有类似的方法,也许是不同的语法。Ruby对我来说充满了惊喜:)
你做这件事的方式相当奇怪。当您试图以很少有文档记录(或不可能)的方式使用该语言时,请考虑一下您正在做什么。
title = "foobar"
row = {
:title => title,
:slug => title.parameterize
}
更好……
class Row
attr_accessor :title
def slug; title.parameterize; end
end
foo = Row.new :title => 'foo bar'
foo.slug #=> "foo-bar"
如果在IRB中运行以下代码,
row = {
:title => "row title",
:slug => row[:title]
}
得到错误NoMethodError: undefined method '[]' for nil:NilClass
。所以不,你不能这样做,因为row
在那时还没有完全初始化并且是nil
对象。