Я все еще ноб в Clojure, правильно знаю, что я пытаюсь решить проблему, связанную с сценарием банковских транзакций для университета.Clojure: Refs пример для банковских операций
Итак ... проблема довольно проста, мне нужно разработать решение для кредитов, дебетовых и денежных переводов.
Я остановился здесь:
(def account
(ref 100))
(defn credit [account amount]
"Credit"
(dosync
(alter account + amount)))
(defn debit [account amount]
"Debit"
(dosync
(if (> amount (balance account))
(throw (Exception. "Insuficient Funds"))
(alter account - amount))))
(defn transfer [from to amount]
"Transfer"
(dosync
(if (<= amount (balance from))
(do
(Thread/sleep 10)
(debit from amount)
(credit to amount))
(throw
(Exception. "Insuficient Funds")))))
Я думаю, что его ничего не трудно понять и выше код работает.
Я хотел бы добавить номер счета, описание сделки, данные и количества и хранение в памяти в каждой функции выше, как:
(defn credit [account description data amount]
"Credit"
(dosync
(alter account + amount)))
Я попытался с хэш-картой, векторами и другими вещами, но Бесполезным Не работай. Также я пытаюсь найти это решение в этой книге: Clojure Programming O'reilly, но все еще сложно реализовать.
Спасибо за ваше время и сообщите мне, если вам нужна дополнительная информация.
Что такое ваш вопрос точно ? – jmargolisvt
Я должен добавить другие «параметры» в каждой функции так, как они могут работать, я отредактировал мой вопрос выше, ясно ли это? – junis087678
Не совсем. Прямо сейчас ваша функция 'credit' создает одно значение. Вы хотите, чтобы он произвел ряд ценностей? Итак, '(кредитная учетная запись 20)' будет производить что-то вроде '[120" депозита "timestamp]'? Вы пробовали работать с 'assoc-in'? Что представляют собой «данные»? – jmargolisvt