Light Table 读取输入
Light Table read input
我在开始使用 Light 时遇到了一些问题 Table。
这是我的代码 (Clojure)
(ns prova1-ed.core
(:gen-class))
(use 'clojure.java.io)
(defn -main [& args]
(println "Type the name of the file to read: ")
(let [fileName (read-line)]
(let [rdr (reader fileName)]
(doseq [line (line-seq rdr)]
(println line)
)))
)
我确定它有效。我用 lein run
测试过。如您所见,程序应该读取用户指定名称的文件。
我已经在 Light Table 中尝试了 CTRL+SPACE
,但这是我收到的结果:
ERROR: Unhandled REPL handler exception processing message {:data {:auto? false, :pos {:line 14, :ch 1}, :mime "text/x-clojure", :tags [:editor.clj :editor.clojure], :type-name "Clojure", :line-ending "\r\n", :ns user, :path "C:\Users\Tiago\Documents\Clojure\prova1_ed\src\prova1_ed\core.clj", :print-length nil, :name "core.clj", :local true, :code "(ns prova1-ed.core\n (:gen-class))\n\n(use 'clojure.java.io)\n\n(defn -main [& args]\n\n (println \"Type the name of the file to read: \")\n\n (let [fileName (read-line)]\n (let [rdr (reader fileName)]\n (doseq [line (line-seq rdr)]\n (println line)\n )))\n)\n"}, :id 90, :op editor.eval.clj.sonar, :session 65d1da68-a730-4ffe-9365-9527726384e3}
如何在 运行 Light Table 环境中输入文件名?
TLDR
我认为您不能 运行 (read-line)
在 Light Table 中,因为它必须添加对允许输入的明确支持。基本没有标准输入。
另一种选择
我建议您修改 -main
函数以接受 explicit file-name
参数,而不是尝试从非标准输入中读取它不可用。
我有一个在 Light 中开发的 Clojure 网络应用 Table。
我在名为 my-app.web
的命名空间中有一个 -main
函数。它看起来像这样:
(defn -main [& [port]]
(let [port (Integer. (or port (env :port) 5000))
store (cookie/cookie-store {:key (env :session-secret)})]
(jetty/run-jetty (-> #'secured-app
wrap-with-logging
wrap-current-user
wrap-current-auth
wrap-error-page
(site {:session {:store store}}))
{:port port :join? false})))
在我命名为 light-table-start.clj
的单独文件中,我有以下代码 运行 我的应用程序在 Light Table 中:
(require '[my-app.web :as web])
(require '[ring.adapter.jetty :as jetty])
(defonce server (web/-main "5000"))
;; (.start server)
;; (.stop server)
I 运行 Eval: Eval editor contents
命令(Ctrl+Shift+Enter 在 Windows 和 Linux 或 ⌘+Shift+Enter 在 Mac OS) 第一次我想 运行 我的应用程序(或稍后,如果连接由于某种原因关闭)。当我想启动或停止服务器时,我可以突出显示相应注释行上的代码和 运行 Eval: Eval a form in editor
命令(Ctrl+在Windows和Linux上输入或⌘+在Mac上输入OS).
我在开始使用 Light 时遇到了一些问题 Table。
这是我的代码 (Clojure)
(ns prova1-ed.core
(:gen-class))
(use 'clojure.java.io)
(defn -main [& args]
(println "Type the name of the file to read: ")
(let [fileName (read-line)]
(let [rdr (reader fileName)]
(doseq [line (line-seq rdr)]
(println line)
)))
)
我确定它有效。我用 lein run
测试过。如您所见,程序应该读取用户指定名称的文件。
我已经在 Light Table 中尝试了 CTRL+SPACE
,但这是我收到的结果:
ERROR: Unhandled REPL handler exception processing message {:data {:auto? false, :pos {:line 14, :ch 1}, :mime "text/x-clojure", :tags [:editor.clj :editor.clojure], :type-name "Clojure", :line-ending "\r\n", :ns user, :path "C:\Users\Tiago\Documents\Clojure\prova1_ed\src\prova1_ed\core.clj", :print-length nil, :name "core.clj", :local true, :code "(ns prova1-ed.core\n (:gen-class))\n\n(use 'clojure.java.io)\n\n(defn -main [& args]\n\n (println \"Type the name of the file to read: \")\n\n (let [fileName (read-line)]\n (let [rdr (reader fileName)]\n (doseq [line (line-seq rdr)]\n (println line)\n )))\n)\n"}, :id 90, :op editor.eval.clj.sonar, :session 65d1da68-a730-4ffe-9365-9527726384e3}
如何在 运行 Light Table 环境中输入文件名?
TLDR
我认为您不能 运行 (read-line)
在 Light Table 中,因为它必须添加对允许输入的明确支持。基本没有标准输入。
另一种选择
我建议您修改 -main
函数以接受 explicit file-name
参数,而不是尝试从非标准输入中读取它不可用。
我有一个在 Light 中开发的 Clojure 网络应用 Table。
我在名为 my-app.web
的命名空间中有一个 -main
函数。它看起来像这样:
(defn -main [& [port]]
(let [port (Integer. (or port (env :port) 5000))
store (cookie/cookie-store {:key (env :session-secret)})]
(jetty/run-jetty (-> #'secured-app
wrap-with-logging
wrap-current-user
wrap-current-auth
wrap-error-page
(site {:session {:store store}}))
{:port port :join? false})))
在我命名为 light-table-start.clj
的单独文件中,我有以下代码 运行 我的应用程序在 Light Table 中:
(require '[my-app.web :as web])
(require '[ring.adapter.jetty :as jetty])
(defonce server (web/-main "5000"))
;; (.start server)
;; (.stop server)
I 运行 Eval: Eval editor contents
命令(Ctrl+Shift+Enter 在 Windows 和 Linux 或 ⌘+Shift+Enter 在 Mac OS) 第一次我想 运行 我的应用程序(或稍后,如果连接由于某种原因关闭)。当我想启动或停止服务器时,我可以突出显示相应注释行上的代码和 运行 Eval: Eval a form in editor
命令(Ctrl+在Windows和Linux上输入或⌘+在Mac上输入OS).