关于 Ruby 语法的最官方文档或学习方法是什么?

What's the most official documentation of or way to learn Ruby's syntax?

https://ruby-doc.org/docs/ruby-doc-bundle/Manual/man-1.4/syntax.html,由 Yukihiro Matsumoto 本人撰写,但鉴于我找不到提及 &.(例如 a&.b)或 &:(例如 m(&:f)), 好像不是很更新。记得曾几何时,有人试图根据 MRI 的单元测试来记录它,但由于缺乏开发人员的协作而放弃并放弃了该项目。

现在,似乎唯一的学习方法是在 Whosebug 或一些开源 ruby 项目上偶然发现新语法。

Ruby 语法的规范文档与语言的源代码一起保存在 doc/syntax 目录中。您可以在 GitHub or e.g. on ruby-doc.org.

上阅读

在那里,您会找到 &. 运算符的 the description

You may use &. to designate a receiver, then my_method is not invoked and the result is nil when the receiver is nil. In that case, the arguments of my_method are not evaluated.

以及 the logic 将 Proc 对象(或更准确地说:可以转换为 Proc 的对象)转换为块:

You can convert a proc or lambda to a block argument with the & operator:

argument = proc { |a| puts "#{a.inspect} was yielded" }

my_method(&argument)

这里,有趣的是,Symbols 响应 to_proc,它允许 Symbols 像 procs 一样工作(因此可以转换为 proc,然后在用于调用方法时转换为块例如 my_method(&:foo).

一般来说,要了解 Ruby 的语法和编程方法,您可以从几本书中的一本开始,例如Programming Ruby 1.9 and 2.0。一般来说,书籍从开始到出版往往需要一些时间(通常是几年),因此往往不会涵盖最新的语言添加。但是,它们可以让您很好地了解该语言及其核心概念。

Ruby 的较新版本中添加了一些内容,使某些事情变得更容易,例如 Ruby 2.3 中添加的 &. 运算符或默认冻结字符串等内容。虽然这些添加的内容很有用,但是当您开始在 Ruby 中实际编程时,您通常会偶然发现它们。在这里,遵循 release news 对新功能和显着变化进行了简要描述可能会有用。