我刚开始学习Clojure,我有自己的Clojure脚本,但是它没有返回我所希望的输出(Hello World)。这是我的代码:
(ns com.playground.core
(:gen-class))
(defn -main
[]
((defn CHEESE
[]
(str "Hello World"))
(CHEESE)))这是我在REPL中得到的输出:
clj꞉com.playground.core꞉>
#'com.playground.core/-main我想在输出中看到Hello World。
发布于 2022-05-13 21:56:39
事实上,这并不是完全错误的。这种返回是“申报的返回”。
例如,您在-main命名空间中定义了一个com.playground.core。
返回是此声明#'com.playground.core/-main的符号。
要打印Hello world消息,需要在声明后调用函数CHEESE。

所以..。关于双括号,这不是好事,但不影响他。另一点是函数名,它也不好。考虑用烤肉串。
您还可以考虑更显式地保留函数声明。类似这样的事情;
(ns com.playground.core
(:gen-class))
(defn CHEESE [] (str "Hello World"))
(defn -main []
(CHEESE))但同时你也没在打印“你好世界”。您只声明一个返回字符串类型的函数(奶酪)。
要打印,您需要调用一个打印函数。
(ns com.playground.core
(:gen-class))
(defn hello [] (str "Hello World"))
(defn -main []
(print (hello)))我做了声明的演变来更好地解释

因此,可以使用let alternative和threading macros改进代码。
考虑使用https://kimh.github.io/clojure-by-example/和https://tryclojure.org/更好地理解这些选项:)
https://stackoverflow.com/questions/72048648
复制相似问题