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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (29)

在Ruby中,{}和之间有什么区别[]

{} 似乎用于代码块和散列。

[]只为数组?

不是很清楚。

提问于
用户回答回答于

这取决于不同的情况:

  1. 当分配给一个变量,[]创建数组,并{}创建散列。
  2. []可以作为自定义方法重写,并且通常用于从哈希中获取内容(标准库设置[]为与哈希上的方法相同fetch) 另外还有一个约定,它用作类方法你可能会static Create在C#或Java中使用方法。例如 a = {1 => 2} # create a hash for example puts a[1] # same as a.fetch(1), will print 2 Hash[1,2,3,4] # this is a custom class method which creates a new hash
  3. {}也是块的语法,但只有传递给参数parens之外的方法。 当你调用没有parens的方法时,Ruby会查看你放置逗号的位置,以确定参数结束的位置(parens的位置,你输入它们的位置)
用户回答回答于

另一个[]不太明显的用法是Proc#调用和Method#调用的同义词。这可能会让你第一次遇到它有点困惑。我猜它背后的理由是它使它看起来更像一个正常的函数调用。

proc = Proc.new { |what| puts "Hello, #{what}!" }
meth = method(:print)

proc["World"]
meth["Hello",","," ", "World!", "\n"]

扫码关注云+社区