在Ruby语言中,{}
和[]
有什么不同
{}
似乎既可用于代码块,也可用于散列。
[]
是否仅适用于阵列?
文档说明不是很清楚。
发布于 2009-04-02 15:47:21
[]
的另一个不太明显的用法是作为Proc#call和Method#call的同义词。在你第一次遇到它的时候,这可能会让你有点困惑。我猜它背后的原因是它让它看起来更像是一个普通的函数调用。
例如。
proc = Proc.new { |what| puts "Hello, #{what}!" }
meth = method(:print)
proc["World"]
meth["Hello",","," ", "World!", "\n"]
发布于 2008-08-15 18:24:07
大体上来说,你是对的。除了哈希,一般的风格是,花括号{}
通常用于可以放在一行上的块,而不是跨几行使用do
/end
。
方括号[]
被用作很多Ruby类的类方法,包括String、BigNum、Dir和令人困惑的Hash。所以:
Hash["key" => "value"]
与以下内容一样有效:
{ "key" => "value" }
发布于 2008-09-17 07:52:51
方括号用于初始化数组。的初始化器用例的文档在
ri Array::[]
花括号{}用于初始化哈希。{}的初始化器用例的文档在
ri Hash::[]
方括号也通常用作许多核心ruby类中的方法,如Array、Hash、String等。
您可以访问具有使用定义的方法“”的所有类的列表
ri []
大多数方法也有一个“=”方法,允许赋值,例如:
s = "hello world"
s[2] # => 108 is ascii for e
s[2]=109 # 109 is ascii for m
s # => "hemlo world"
大括号也可以用来代替块上的“do...end”,如"{ ... }“。
另一种可以看到使用方括号或花括号的情况是在特殊的初始化器中,其中可以使用任何符号,例如:
%w{ hello world } # => ["hello","world"]
%w[ hello world ] # => ["hello","world"]
%r{ hello world } # => / hello world /
%r[ hello world ] # => / hello world /
%q{ hello world } # => "hello world"
%q[ hello world ] # => "hello world"
%q| hello world | # => "hello world"
https://stackoverflow.com/questions/12565
复制相似问题