“序列化”是做什么的?

时间:2019-05-09 11:01:04

标签: perl6

docs中,

Returns the self-reference to the instance itself:
    my $b; # defaults to Any 
    say $b.serial.^name;   # OUTPUT: «Any␤» 
    my $breakfast = 'food';
    $breakfast.serial.say; # OUTPUT: «food␤» 

我没有这个程序最雾的地方,请有人可以解释吗?

2 个答案:

答案 0 :(得分:9)

Supply上,这是一种信息方法,应该指示该供应上是否永远不会存在任何并发的emit

HyperSeqRaceSeq上,它返回序列化的Seq,因此您可以认为它与hyperrace方法相反。

通常,它似乎会返回自身,这从HyperSeqRaceSeq的角度来看似乎很有意义。

是的,应该正确地记录这些内容,因此请创建一个文档问题。谢谢!

答案 1 :(得分:7)

在doc示例中,它什么也不做。也就是说,如果将其删除,则会得到相同的结果:

my $b; # defaults to Any 
say $b.^name;   # OUTPUT: «Any␤» 
my $breakfast = 'food';
$breakfast.say; # OUTPUT: «food␤» 

更笼统地说,如果您想改善文档,那么我认为最好不要使用serial方法,而要打开指向此SO的文档问题。

serial方法似乎不是官方语言

A search of the roast repo for "serial"得出的匹配为零。<​​/ p>

在Rakudo源代码中,方法名serial已重载为具有以下三种含义之一:

  • 一个布尔值,用于声明Supply序列是否始终是串行的。 Rakudo源示例:12。在我看来,这就像不需要记录的内部方法。

  • 将并行序列(hyperrace)强制转换为相同序列的串行版本。在我看来,这就像不需要记录的内部方法。

  • 一个"no op",返回其请求者。我怀疑最好不对其进行记录,至少要等到其存在的理由明确之后再进行记录。它的正式身份即规格(烤制)很明确;和/或尝试系统地记录哪些操作设置了is nodal

以上似乎都不值得普通用户的注意或说明。

Any方法的serial类定义似乎毫无意义

The Any class serial method返回self,即被调用时为空操作。

我目前不明白为什么会有Any类定义。

可能的一点是,内部代码会在未知且通常不可知的类的实例上进行.serial调用,因此{中需要有serial的默认定义{1}}类。

但是a search of the rakudo repo for ".serial"建议仅对补给或超级/竞赛序列进行呼叫。

也就是说,我注意到Any声明之前的is nodalproto serial声明中的Any特征。也许这就是它在multi method serial中的原因。

另请参阅Arbitrary drift of methods to Mu and Any

您引用的文档似乎毫无意义

定义和示例似乎反映出某人的幽默感。我称赞幽默的使用,但是在这种情况下,我怀疑最好的改进就是删除您链接的页面。