我正在学习Corda R3培训课程并且正在取得进展,但是当被要求创建一个初始化为0的付费变量时,答案是:
package net.corda.training.state
import net.corda.core.contracts.Amount
import net.corda.core.contracts.ContractState
import net.corda.core.identity.Party
import java.util.*
/**
* This is where you'll add the definition of your state object. Look at the unit tests in [IOUStateTests] for
* instructions on how to complete the [IOUState] class.
*
* Remove the "val data: String = "data" property before starting the [IOUState] tasks.
*/
data class IOUState(val amount: Amount<Currency>,
val lender: Party,
val borrower: Party,
val paid: Amount<Currency> = Amount(0, amount.token) ):
ContractState {
override val participants: List<Party> get() = listOf()
}
现在,我了解到我们需要将值强制转换为Amount类型,但是为什么要使用amount.token?我从以下途径获得解决方案:
此外,任务是将其定义为磅,但我不知道该怎么做。
我在以下位置找到磅的参考
https://docs.corda.net/api/kotlin/corda/net.corda.finance/kotlin.-int/index.html
我只是不明白如何定义函数。
有人对我有任何指示或建议吗?这段代码可以编译并通过测试,但是我想了解为什么...谢谢!
答案 0 :(得分:0)
令牌仅指示这是多少。
所以在这里使用时:
val paid: Amount<Currency> = Amount(0, amount.token)
您要获取用于数量参数的任何令牌,例如POUNDS,DOLLARS等,并将“已支付金额”设置为相同的令牌类型。
看看在Corda中的currency.kt中它是如何完成的