gpt4 book ai didi

Chapel:复制可跨越域

转载 作者:行者123 更新时间:2023-12-02 11:35:42 24 4
gpt4 key购买 nike

我想存储一组域。我的代码与此类似:

var doms:[1..10] domain(1);
...
doms[i]={0..30 by 3}

我收到以下错误:

cannot assign from stridable domain to an unstridable domain without an an explicit cast

使用强制转换 dom[i]={0..30 by 3} : domain(1) 我丢失了步幅信息。如何在不失去步伐的情况下复制域名?

谢谢

最佳答案

像示例中所示的矩形域类型实际上具有三个定义它的参数:rankidxTypestridable(示例问题中指定 rank=1)。 stridable 参数默认为 false,因此无法分配 stridable 域。要指定域应该是可跨域的,您可以使用 stridable=true 声明域类型:

var doms: [1..10] domain(1, stridable=true);
...
doms[i] = {0..30 by 3};

正如您所发现的,将跨步域转换为 domain(1) 类型会默默地丢弃跨步,因为 domain(1) 只能具有单位跨度。如果您希望出现错误而不是默默地放弃步幅,则可以使用 safeCast 代替。 safeCast 将在丢弃原始域之前验证其是否具有单位步长,如果没有,将发出错误:

doms[i] = {0..30 by 1}.safeCast(domain(1)); // This is allowed.
doms[i] = {0..30 by 3}.safeCast(domain(1)); // This is a runtime error.

关于Chapel:复制可跨越域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43372372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com