4

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

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

换句话说,我是否可以以某种方式在其内部引用一个未初始化的哈希,或者我必须这样做:

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

感谢您的评论。当然,这段代码是行不通的。我问是否有类似的方法,也许有不同的语法。Ruby 对我来说充满了惊喜 :)

4

2 回答 2

6

你正在以一种相当奇怪的方式解决这个问题。当您遇到尝试以很少记录(或不可能)的方式使用该语言的情况时,请尝试考虑您在做什么。

title = "foobar"

row = {
  :title => title,
  :slug => title.parameterize
}

更好……</p>

class Row
  attr_accessor :title

  def slug; title.parameterize; end
end

foo = Row.new :title => 'foo bar'
foo.slug    #=> "foo-bar"
于 2011-05-04T17:09:25.847 回答
0

如果您在 IRB 中运行以下命令,

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

你得到错误NoMethodError: undefined method '[]' for nil:NilClass。所以不,你不能这样做,因为那时row还没有完全初始化并且是一个nil对象。

于 2011-05-04T17:01:54.767 回答