安全导航操作员的语法糖(&。)

时间:2016-01-05 05:07:44

标签: ruby syntactic-sugar ruby-2.3

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

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

2 个答案:

答案 0 :(得分:7)

  

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

它不能。马茨并不想要它。

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

Matz says

  

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

答案 1 :(得分:3)

答案很短 - 你不能。从Ruby 2.3 NEWS

获取“语法上需要的方法名称”