4

次のように定義された関数があります

(defn a [] "Hello")

私は別の変数を持っています。

(def b "a")

'b' の文字列値で表される関数を呼び出したいと思います。つまり、'a' を呼び出す必要があります。それ、どうやったら出来るの?

4

1 に答える 1

10

それを a に変換してから、次のようにする必要がありsymbolますresolve

user=> ((resolve (symbol b)))
"Hello"

user=> ((-> b symbol resolve))
"Hello"

少し明確にするために、もう少し冗長な解決策を次に示します。

(let [func (-> b symbol resolve)]
  (func arg1 arg2 arg3)) ; execute the function
于 2012-09-06T05:19:48.790 に答える