Nik*_*han 6 arrays slice chapel
我正在尝试返回对数组切片的引用,但是我得到了以下编译时错误(其中有问题的行在 slice
test.chpl:9:错误:ref返回非法表达式
返回完整数组工作正常,就像在主程序中引用切片一样.
有没有正确的方法将ref返回到切片?提前致谢!
record R {
var A : [0.. #10] int;
proc full() ref {
return A;
}
proc slice() ref {
return A[0.. #5];
}
}
var r : R;
ref x1 = r.full();
ref x2 = r.slice();
ref x3 = x1[0.. #5];
Run Code Online (Sandbox Code Playgroud)
只是为了完整性:
chpl版本1.16.0预发布(2659cc6)
截至您使用的编译器的当前版本,这是一个悬而未决的问题,正在GitHub 问题 #5341上进行讨论。我同意你的观点,这ref似乎是表明返回数组切片意图的适当方法,但我们尚未结束讨论。
同时,您应该能够使用以下基于编译指示的解决方法(请注意,Chapel 编译指示通常不适合最终用户使用,并且从长远来看,该编译指示不太可能得到支持,尽管我不会这样做)不要指望我们在没有提出像提议的替代方法的情况下就将其淘汰ref):
record R {
var A : [0.. #10] int;
proc full() ref {
return A;
}
pragma "no copy return"
proc slice() {
return A[0.. #5];
}
}
var r : R;
ref x1 = r.full();
ref x2 = r.slice();
ref x3 = x1[0.. #5];
x1[0] = 1;
x2[1] = 2;
x3[2] = 3;
writeln(r);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |