Motoko中的条件为空



获取以下错误:

expression of type
?Product/798
cannot produce expected type
{id : Nat; name : Text; price : Nat; sku : Text}

当试图在id列表上循环时,获取相应的HashMap值,并且只有在get((函数返回Product时才添加到新数组中。

for (id in productIds.vals()) {
var product: ?Product = products.products.get(id);
if (product != null) {
products_list := Array.append<Product>(products_list, [product]);
};
};

我可能误解了处理这个问题的最佳方式吗?我似乎不应该得到任何错误,因为如果它不是一个产品类型(它引用的"预期类型"(,它应该继续,对吧?

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

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

switch product {
case (?p) { products_list := Array.append<Product>(products_list, [p]) };
case null { ...do something else... };
}

相关内容

  • 没有找到相关文章

最新更新