4

私はClojureを学んでいますが、これまでのところ、途方もなく基本的なこの小さな難問を理解することはできません。

私はこのファイルを持っています:

(ns cloapp.core
  (:gen-class))

(defn -main
  "I don't do a whole lot ... yet."
  [& args]
  (println "Hello, World!")
  (println "Well Hi there, im a string !")
  (println "Why wont this work !")
  (myFunc "Hiya"))

(defn myFunc [aVar]
    (println aVar))

これをで実行しようとすると、

lein run

それは文句を言って言います、

Caused by: java.lang.RuntimeException: Unable to resolve symbol: myFunc in this context

しかし、myFuncへの呼び出しをmainから削除して実行すると、

lein repl
cloapp.core=> (myFunc "Hiya !")
Hiya !
nil
cloapp.core=> 

それなら私はそれを呼ぶことができます。どうしてこれなの ?名前空間と関係があると思いますが、それを読んでもうまくいきません。

A

4

1 に答える 1

7

myFuncシンボルはまだ定義されていないため、mainはそれを見つけることができません。myFuncの定義をmainの上に移動すると、機能します。

于 2012-12-13T22:32:52.060 に答える