首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby中的不同括号是什么意思?

Ruby中的不同括号是什么意思?
EN

Stack Overflow用户
提问于 2008-08-15 18:09:52
回答 5查看 47.6K关注 0票数 86

在Ruby语言中,{}[]有什么不同

{}似乎既可用于代码块,也可用于散列。

[]是否仅适用于阵列?

文档说明不是很清楚。

EN

回答 5

Stack Overflow用户

发布于 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"]
票数 23
EN

Stack Overflow用户

发布于 2008-08-15 18:24:07

大体上来说,你是对的。除了哈希,一般的风格是,花括号{}通常用于可以放在一行上的块,而不是跨几行使用do/end

方括号[]被用作很多Ruby类的类方法,包括String、BigNum、Dir和令人困惑的Hash。所以:

Hash["key" => "value"]

与以下内容一样有效:

{ "key" => "value" }
票数 9
EN

Stack Overflow用户

发布于 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"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档