当前位置: 首页 > 知识库问答 >
问题:

你能克隆一个Perl 6 Proc吗?

谯灿
2023-03-14

我在2018.01玩这个:

my $proc = Proc.new: :out;
my $f = $proc.clone;
$f.spawn: 'ls';
put $f.out.slurp;

它说它做不到。奇怪的是,错误消息是关于我没有使用的例程和不同的类:

Cannot resolve caller stdout(Proc::Async: :bin); none of these signatures match:
    (Proc::Async:D $: :$bin!, *%_)
    (Proc::Async:D $: :$enc, :$translate-nl, *%_)
  in block <unit> at proc-out.p6 line 3

共有1个答案

万嘉石
2023-03-14

所有内容都继承了Mu的默认克隆方法,该方法进行浅层克隆,但这并不意味着所有内容都可以进行克隆。这尤其适用于可能包含对操作系统级事物的引用的对象,例如ProcIO::Handle。作为设计异步程序的人,我可以肯定地说,让它在克隆上做任何有用的事情并不是设计的考虑因素。我没有设计过程,但我怀疑同样的情况也适用。

至于错误,请记住Perl 6标准库是在Perl 6中实现的(很像Java和. Net,但不太像Perl 5,默认情况下提供的许多东西直接指向用C编写的东西)。在这个特定的情况下,Proc是根据Proc::Async实现的。Rakudo试图在某种程度上修剪堆栈跟踪以消除设置内的调用,这通常对语言用户来说是一种胜利,但在这种情况下可能会有点帮助。使用--ll-异常标志运行Rakudo提供了完整的细节,从而更清楚发生了什么。

 类似资料:
  • 问题内容: 将变量分配给另一个变量会将引用复制到同一实例。这意味着更改一个将更改另一个。 我实际上如何克隆或复制实例? 问题答案: 使用Date对象的方法,该方法返回自1970年1月1日00:00:00纪元时间以来的毫秒数: 在Safari 4中,您还可以编写: …但是我不确定这是否可以在其他浏览器中使用。(似乎可以在IE8中使用)。

  • 我别无选择,我必须使用git clone与ssh,所以在那之后,当我使用作曲家安装,它将下载一些依赖使用git clone ssh从比特桶当我尝试运行git clone使用SSH, 我得到这个输出 我不知道从哪里得到RSA密钥指纹SHA256: zzXQOXSRBEiUtuE8AikJYKwbHaxvSc0ojez9YXaGp1A当使用命令行ssh-keygen生成私钥和公钥时,我得到了RSA密钥

  • 主要内容:示例在某些情况下,您可能需要一个表的完整、精确副本,也即克隆表(复制表)。我们首先想到的是使用 CREATE TABLE 命令创建一张新表,然后使用 SELECT 命令从旧表中选取所有数据,并使用 INSERT 命令插入到新表中。但是这种做法可能达不到您的目的,因为副本必须包含相同的索引、约束、默认值等。 如果您使用 MySQL 数据库,可以借助 SHOW CREATE TABLE 命令,该命令用来展

  • 应用克隆 (用于已有服务,需要在另一个业务线下创建一个同样的服务,不需要重新创建) 服务/环境克隆(菜单栏:工具集->服务/环境克隆) 点击菜单栏,在项目列表中筛选您要克隆的项目,然后点击 克隆 ,弹框中选择您要克隆到哪个业务线。 选择目录空间,系统为在目标空间下生成该应用所需要的所有类型资源和Jenkins Job。

  • HackerNews 克隆是基于 HN 的官方 firebase API 、Vue 2.0 、vue-router 和 vuex 来构建的,使用服务器端渲染。 Live Demo 注:如果在一段时间内没有人访问过该网站,则需要一些加载时间。 [Source] 特性 服务器端渲染 Vue + vue-router + vuex 服务端数据提前获取 客户端状态 & DOM 合并 单文件 Vue 组件

  • void cloneTable(String srcName, String destTable, boolean flushTable) 功能 克隆已存在的表,具有相同的TableSpec和表数据 方法参数 1.srcName : String : required 克隆的源表的表名 2.destTable : String : required 克隆的目标表的表名 3.flushTable :