为什么要用amount.token初始化付费变量?

时间:2019-02-17 11:32:13

标签: unit-testing kotlin corda

我正在学习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://github.com/corda/corda-training-solutions/blob/master/kotlin-source/src/main/kotlin/net/corda/training/state/IOUState.kt

此外,任务是将其定义为磅,但我不知道该怎么做。

我在以下位置找到磅的参考

https://docs.corda.net/api/kotlin/corda/net.corda.finance/kotlin.-int/index.html

我只是不明白如何定义函数。

有人对我有任何指示或建议吗?这段代码可以编译并通过测试,但是我想了解为什么...谢谢!

1 个答案:

答案 0 :(得分:0)

令牌仅指示这是多少。

所以在这里使用时:

val paid: Amount<Currency> = Amount(0, amount.token)

您要获取用于数量参数的任何令牌,例如POUNDS,DOLLARS等,并将“已支付金额”设置为相同的令牌类型。

看看在Corda中的currency.kt中它是如何完成的