有https://ruby-doc.org/docs/ruby-doc-bundle/Manual/man-1.4/syntax.html,作者是 Yukihiro Matsumoto 本人,但鉴于我找不到提及&.(eg a&.b) 或&:(eg m(&:f)),好像更新的不是很多。我记得曾经有一个人试图根据 MRI 的单元测试来记录它,但由于缺乏开发人员的协作而放弃并放弃了该项目。
目前,似乎唯一的学习方法是在 StackOverflow 或某些开源 ruby 项目上偶然发现新语法。
Ruby 语法的规范文档与该目录中的语言源代码一起维护doc/syntax。您可以在GitHub或ruby-doc.org上阅读它。
在那里,您将找到操作员的描述&.:
您可以使用
&.来指定接收者,然后my_method不会被调用,结果是nil当接收者为 时nil。my_method在这种情况下,不会评估的参数。
以及将 Proc 对象(或更准确地说:可以转换为 Proc 的对象)转换为块的逻辑:
您可以使用运算符将 proc 或 lambda 转换为块参数
&:Run Code Online (Sandbox Code Playgroud)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 编程时,您通常会偶然发现它们。在这里,关注发布新闻可能会很有用,其中简要描述了新功能和显着变化。