首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Motoko中的条件为空?

Motoko中的条件为空?
EN

Stack Overflow用户
提问于 2021-07-03 05:02:51
回答 1查看 61关注 0票数 0

获取以下错误:

代码语言:javascript
复制
expression of type
  ?Product/798
cannot produce expected type
  {id : Nat; name : Text; price : Nat; sku : Text}

当尝试循环遍历ids列表时,获取相应的Product值,并仅当HashMap ()函数返回HashMap时才添加到新数组中。

代码语言:javascript
复制
for (id in productIds.vals()) {
   var product: ?Product = products.products.get(id);

   if (product != null) {
      products_list := Array.append<Product>(products_list, [product]);
   };
};

我是不是误解了解决这个问题的最好方法?看起来我不应该得到任何错误,因为如果它不是Product类型(这是它引用的“预期类型”),它应该继续下去,对吗?

EN

回答 1

Stack Overflow用户

发布于 2021-07-07 21:38:50

变量product的类型为?Product,但Array.append函数的实例化需要一个普通类型为Product的值数组。

null的比较并没有神奇地改变变量的类型。您需要将其与switch进行模式匹配,以提取实际值:

代码语言:javascript
复制
switch product {
  case (?p) { products_list := Array.append<Product>(products_list, [p]) };
  case null { ...do something else... };
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68231228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档