Payment.assetId 数据类型
Payment.assetId data type
我正在尝试处理示例 https://docs.wavesplatform.com/en/smart-contracts/ride4dapps/examples.html 并稍微更改它以将其扩展到任何类型的资产。不清楚函数返回的是什么类型的数据,如何带入字符串,以便后面写入state。
let payment = match(i.payment) { #even none or exact amount of the attached payment(InvokeScriptTransaction).
case p : AttachedPayment => p
case _ => throw("You have to provide a payment to deposit")
}
let assetId = toBase58String(payment.assetId)
如果您尝试编译代码,您会看到如下错误
Compilation failed: Non-matching types: expected: ByteVector, actual: UNION(ByteVector|Unit) in 2176-2207
每当变量的值不明确时,您必须使用 extract
函数提取值。
在这种情况下,你可以获得Unit(代表Waves assetId)或byteVector(其他资产的assetId),所以你必须提取。以下代码适用于您的案例:
let assetId = toBase58String(extract(payment.assetId))
我正在尝试处理示例 https://docs.wavesplatform.com/en/smart-contracts/ride4dapps/examples.html 并稍微更改它以将其扩展到任何类型的资产。不清楚函数返回的是什么类型的数据,如何带入字符串,以便后面写入state。
let payment = match(i.payment) { #even none or exact amount of the attached payment(InvokeScriptTransaction).
case p : AttachedPayment => p
case _ => throw("You have to provide a payment to deposit")
}
let assetId = toBase58String(payment.assetId)
如果您尝试编译代码,您会看到如下错误
Compilation failed: Non-matching types: expected: ByteVector, actual: UNION(ByteVector|Unit) in 2176-2207
每当变量的值不明确时,您必须使用 extract
函数提取值。
在这种情况下,你可以获得Unit(代表Waves assetId)或byteVector(其他资产的assetId),所以你必须提取。以下代码适用于您的案例:
let assetId = toBase58String(extract(payment.assetId))