将一个添加到Ints的交汇处:
put any( 1, 3, 7 ) + 1;
现在你们将这些Ints的交汇点增加了一个:
any(2, 4, 8)
所以,2 == any(2, 4, 8)
是真的。
建立字符串连接并附加到这些字符串:
put any( <h H> ) ~ 'amadryas';
你得到的结果不同于hamadryas&#39;或者&#39; Hamadryas&#39;:
any("h", "H")amadryas
我期待的是:
any( 'hamadryas', 'Hamadryas' );
这些操作的区别是什么,即使它们应该相似,也会给他们不同的行为?
答案 0 :(得分:1)
在High Sierra 10.13上,失败了:
put any( 1, 3, 7 ) + 1
此类型无法取消装入本机字符串:P6opaque,Junction 在第1行的块中
perl6 -v
这是基于MoarVM版本2017.10构建的Rakudo Star版本2017.10 实现Perl 6.c.
答案 1 :(得分:0)
引用the filed bug report,这是Zoffix ++改进的:
感谢您的举报。 lizmat ++解决了这个问题。
put
例程 not 不能显式处理Junction参数。因此,作为per design,最终结果是对其每个元素都调用put any( 1, 3, 7 ) + 1; # 248
put any( <h H> ) ~ 'amadryas'; # hamadryasHamadryas
:
put
根据设计,put any( 1, 3, 7 ) + 1; # 482
put any( <h H> ) ~ 'amadryas'; # Hamadryashamadryas
的调用顺序不确定。因此,相同代码的其他运行(可能与更高版本的编译器一起运行)可能会导致:
put
与say
相比,say
例程做特殊情况下的结点。因此,最终结果只是一个对say any( 1, 3, 7 ) + 1; # any(2, 4, 8)
say any( <h H> ) ~ 'amadryas'; # any(hamadryas, Hamadryas)
的调用:
string TLDID = gvTLDs.SelectedRow.Cells[0].Text;