2

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​​ 项目上偶然发现新语法。

4

1 回答 1

5

doc/syntaxRuby 语法的规范文档与该目录中的语言源代码一起维护。您可以在GitHub或例如ruby​​-doc.org上阅读它。

在那里,您将找到操作员的描述&.

你可以用&.来指定一个接收者, thenmy_method不被调用,结果是nil当接收者是nil. 在这种情况下,my_method不会评估 的参数。

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

您可以使用运算符将​​ proc 或 lambda 转换为块参数&

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 和 2.0。一般来说,书籍从开始到出版往往需要一些时间(通常是几年),因此往往不会涵盖最新的语言添加。但是,它们可以为您提供有关该语言及其核心概念的良好概述。

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

于 2018-06-04T21:55:00.593 回答