在自身内部引用哈希项

时间:2011-05-04 16:54:26

标签: ruby ruby-1.9 ruby-1.9.2

我有一个很短的问题。是否可以使用以下内容初始化哈希:

row = {
    :title => "row title",
    :slug => row[:title].paremeterize
}

换句话说,我可以以某种方式引用其内部的单元化哈希,或者我必须这样做:

row = {
    :title => "row title"
}
row[:slug] = row[:title].paremeterize

感谢您的评论。当然,这段代码不起作用。我问是否有类似的方法,可能有不同的语法。 Ruby给我带来了惊喜:)

2 个答案:

答案 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对象。