关于变量的Perl 6文档指出%sigil可以与执行
Associative角色的类型一起使用.它特别提到了
Pair,Hash和
Map.但是,我如何将
Pair变成带有%的变量?
> my Pair %pair = Pair.new( 'a','b' ) Type check Failed in assignment to %pair; expected Pair but got Str ("b") in block <unit> at <unkNown file> line 1
如果我分配没有类型约束我得到一个哈希:
my %pair = Pair.new: 'a','b'; # Hash,not Pair
装订工程:
my %pair := Pair.new: 'a','b'; # Pair
> my Pair %p2 := Pair.new: 'a','b'; Type check Failed in binding; expected Associative[Pair] but got Pair (:a("b")) in block <unit> at <unkNown file> line 1
同样的问题出现在Bag和Set上.用Map做,你最终得到了一个可变的Hash.
我认为这里有各种各样的问题,但也许%sigil并不像我所认为的那样多才多艺.
解决方法
您可以使用%sigiled容器来保存执行
Associative
角色的任何值.
正如您所发现的那样,您必须小心如何申报和分配.
在你的例子中,我的配对%对,你说要做一个可以保持配对值的哈希(不是一对)(%pair.WHAT =’哈希[配对]’)
试试这个:
my Pair %p2 = mykey => Pair.new: 'a','b';
%p2<c> = 'd';
因为你没有分配一对.
正如您所发现的那样,绑定以您认为应该的方式工作.
原文地址:https://www.jb51.cc/Perl/171850.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。