什么是perl实验功能,postderef?

时间:2017-07-13 14:18:48

标签: pragma perl5

我在这里Moxie on line 8看到use experimental 'postderef'使用了experimental。我只是对它的作用感到困惑。 public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null) return String.Empty; var transporttModeType = (TransportModeTypeEnum) value; string imagePath = String.Empty; ... 的手册页也很模糊,

  

允许使用后缀解除引用表达式,包括插入字符串

任何人都可以展示在没有编译指示的情况下你必须做什么,以及pragma使得更容易或可能做什么?

1 个答案:

答案 0 :(得分:2)

它是什么

很简单。它的语法糖起伏不定。由于该特征是5.24中的核心,因此不再需要该编译指示。但是为了在5.20和5.24之间支持该功能,必须使用:@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) @TestPropertySource(properties = "server.port=8888")启用它。在提供的示例中,在Moxie中,one line中使用了use experimental 'postderef';没有它,你必须写$meta->mro->@*

概要

这些直接来自D Foy的博客,以及Idiomatic Perl的比较,我已经写过了。

@{$meta->mro}

这些例子完全由D Foy提供,

D Foy example                    Idiomatic Perl
$gimme_a_ref->()->@[0]->%*       %{ $gimme_a_ref->()[0] }
$array_ref->@*                   @{ $array_ref }
get_hashref()->@{ qw(cat dog) }  @{ get_hashref() }{ qw(cat dog) }

参数换

  • D Foy example Idiomatic Perl $array_ref->[0][0]->@* @{ $array_ref->[0][0] } $sub->&* &some_sub 允许链接。
  • postderef可以更轻松地将复杂插值转换为标量字符串。

参数抵

完全不是由D Foy

提供的

  • 失去了印记的重要性。而在你知道"类型"之前是通过查看最左侧的印记。现在,除非您阅读整个链条,否则您不会知道。这似乎破坏了对sigil的任何争论,强迫你在知道预期之前阅读整个链条。也许争论这些印章是一个好的设计决定的日子已经过去了?但是,再次,perl6 is still all about them。这里缺乏一致性。
  • 超载postderef_qq表示,类型。现在,您->取消引用称为$ type ,并且还强制键入
  • 切片在基元上没有类似的语法。

    $type->[0][1]->@*

来源