0

環境変数を取得するために環境を使用して構成マップを設定しています。環境は大文字を小文字に、「_」文字を「-」に正規化するため、キーワードの繰り返しになってしまいました

(def config {:consumer-key (env :consumer-key)
             :keystore-password (env :consumer-key)
             :ssl-keystore-password (env :ssl-keystore-password)
             :ssl-certificate-name (env :ssl-certificate-name)
             :callback-url (env :callback-url)
             :mp-private-key (env :mp-private-key)
             :merchant-checkout-id (env :merchant-checkout-id)
             :is-sandbox (env :is-sandbox)})

この繰り返しを防ぐ方法はありますか?キーワードを受け取り、マップの何らかのキーと値のペアを返す関数でしょうか?

4

2 に答える 2

0

ヘルパー関数を定義してそれを行う 1 つの方法を次に示します。

(def env {:consumer-key   1
          :ssl-key        2
          :mp-private-key 3})

(def key-list (keys env))

(defn extract-from
  [src-fn keys]
  (into (sorted-map)
    (for [key keys]
      {key (src-fn key)} )))

(println "result:" (extract-from env key-list))

=> result: {:consumer-key 1, :mp-private-key 3, :ssl-key 2}

テスト目的で、トリックを使用し、ライブラリの関数をマップに置き換えたことに注意してください。 キーを検索するときにマップが関数のように機能するため、これは機能します。のような実際の関数でも機能します。env envenvironenviron.core/env

于 2016-12-28T19:35:32.903 に答える