4
str = "Hello World!"
str.[] /Hello/    # => "Hello"
str[/Hello/]      # => "Hello", syntactic suger version

str = nil
str&.[] /Hello/   # => nil
str&.[/Hello/]    # => SyntaxError: unexpected '[', expecting '('
str[/Hello/]      # => NoMethodError: undefined method `[]' for nil:NilClass

安全导航运算符(&.)如何用于[]方法的语法糖?

4

2 回答 2

7

安全导航运算符(&.)如何用于[]方法的语法糖?

它不能。马茨不想这样。

此功能已被请求和拒绝两次:

马茨 说

我不会为 aref 和 aset 添加安全导航。也许您可以使用a.?[](x)(操作员的方法调用)。

于 2016-01-05T05:40:04.897 回答
3

答案很简短——你不能。因为 Ruby 2.3 中的“方法名称在语法上是必需的”

于 2016-01-05T05:40:24.280 回答