2017-06-27 28 views
1

根据this document$MATCH$&的别名,我想用它来提高可读性。

但它在我的环境中不起作用。

'1234-4567'.match(/\d{4}-/){ $& } # => "1234-" 
'1234-4567'.match(/\d{4}-/){ $MATCH } # => nil 

我误解了什么?

+0

我想避免全局变量并使用'match(...){| m | m [0]}'代替。 – Stefan

+1

@Stefan:或者只是''1234-4567'[/ \ d {4} - /]' –

+0

@EricDuminil当然,我认为这是一个缩短的例子。 – Stefan

回答

4

这些[伪]全局变量的人名在默认情况下未启用。您必须要求english才能使用它们。

'1234-4567'.match(/\d{4}-/){ $& } # => "1234-" 
'1234-4567'.match(/\d{4}-/){ $MATCH } # => nil # !> global variable `$MATCH' not initialized 

require 'english' 
'1234-4567'.match(/\d{4}-/){ $MATCH } # => "1234-"