Smartmatch от 5.27 ~~ vs = ~ - PullRequest
       2

Smartmatch от 5.27 ~~ vs = ~

4 голосов
/ 24 апреля 2019

Я сейчас использую Perl 5.24, и smartmatch - отличный универсальный оператор, например,

%foobar ~~ @foo; 

и все его тонкости.

Я понимаю, что начиная с 5.27 и далеефункциональность будет уменьшена до умных часов, включая

$foo = qr/foo/; 

Хорошо, поэтому мне придется переписать мои конвейеры данных, чтобы они были совместимыми.

Мой вопрос, если подтвердится, в чем разницаМежду,

'foo' ~~ $foo;

и,

 'foo' =~ /$foo/;

Меня поражает, что smartmatch удаляется во всех, кроме имени.Прав ли я, и если нет, то чего мне не хватает?

История

У него необычная история, и следует подчеркнуть, что она классифицируется как экспериментальная.Я пишу то, что знаю.Я думаю, что многие из вас будут знать больше, любой вклад будет полезен, потому что это пример (для студентов) языковой эволюции:

  • 5.10 впервые введено
  • 5.14 введено% foobar ~~Тип совпадения @foo
  • 5.27 Удалено во всех, кроме имени?Все еще экспериментальный?

1 Ответ

6 голосов
/ 24 апреля 2019

Умное сопоставление все еще экспериментально.

Если бы у нас были машины времени, большинство людей, работающих над разработкой perl, вернулись бы в прошлое и удалили умное сопоставление из perl5.Единственное, что сделал умный матч, - это четко показать, что взять что-то из perl6 и попытаться связать это с perl5 не получится, если это что-то более сложное, чем say.

Никто не знает, каково будущееумный матч в perl5 будет.Там нет соглашения о том, что это должно быть.Если бы не страшная «обратная совместимость», умный матч был бы мертв и похоронен много лет назад.

Спасите себя от боли и не используйте умный матч.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...