Зачем использовать amount.token для инициализации переменной Paid? - PullRequest
0 голосов
/ 17 февраля 2019

Я прохожу учебный курс 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, но почему сумма. токен?Я взял решение от:

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 голосов
/ 10 марта 2019

Токен просто указывает, какое это количество.

Так что при использовании здесь:

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

Вы берете любой токен, использованный для параметра суммы, например, POUNDS, DOLLARS и т. Д., И устанавливаете оплаченную сумму для того же типа токена.

Посмотрите, как это делается в валютах.kt в Корде

...