Почему уменьшается Стоп после одного номера счета? - PullRequest
0 голосов
/ 18 декабря 2011

Что-то не так с тем, как я написал функцию gen-sim-map. Останавливается после одного номера счета и последнего номера в векторе. Мне интересно, что я делаю не так. Я мог бы решить проблему, применив функцию «повторить», но мне это кажется неправильным.

Вот данные и звонок; ниже приведены значения функций.

(def acct-nums (gen-acct-nums 5))
#'ba1-app/acct-nums

ba1-app=> acct-nums
[10000 10001 10002 10003 10004 10005]

ba1-app=> (gen-sim-map acct-nums)
{10005 [\W 160.12]}

(defn random-trans 
    [] 
    (nth avail-trans (.nextInt random (count avail-trans))))

(defn random-amount
    []
    (float (/ (.nextInt random (count (range 1 10000))) 25 )))

; Generate an account number. The range is arbitrary to make it look a real bank account #.
(defn gen-acct-nums [range-end-idx]
    (vec (range 10000 (+ 10000  range-end-idx 1))))

(defn gen-sim-map [acct-nums]
    (reduce
        (fn [sim-map one-acct-num]
            (let [trans (random-trans )
                  amt   (random-amount )]
                { one-acct-num (vector trans amt) } ))
        {}
        acct-nums))

1 Ответ

2 голосов
/ 18 декабря 2011

Я подозреваю, что ваша проблема в том, что вы не меняете аккумулятор. Я ожидаю увидеть что-то вроде

(defn gen-sim-map [acct-nums]
    (reduce
        (fn [sim-map one-acct-num]
            (let [trans (random-trans )
                 amt   (random-amount )]
                (assoc sim-map one-acct-num (vector trans amt)) )) ; <---
        {}
        acct-nums))

или аналогичный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...