我有一个很短的问题。是否可以使用以下内容初始化哈希:
row = {
:title => "row title",
:slug => row[:title].paremeterize
}
换句话说,我可以以某种方式引用其内部的单元化哈希,或者我必须这样做:
row = {
:title => "row title"
}
row[:slug] = row[:title].paremeterize
感谢您的评论。当然,这段代码不起作用。我问是否有类似的方法,可能有不同的语法。 Ruby给我带来了惊喜:)
答案 0 :(得分:6)
你会以一种相当奇怪的方式解决这个问题。当您遇到很少记录(或不可能)的方式尝试使用该语言的情况时,请尝试考虑您正在做什么。
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"
答案 1 :(得分:0)
如果您在IRB中运行以下内容,
row = {
:title => "row title",
:slug => row[:title]
}
您收到错误NoMethodError: undefined method '[]' for nil:NilClass
。所以不,你不能这样做,因为row
尚未完全初始化并且是nil
对象。