Clojureで:関数内のletを使用してJava呼び出しを実行するときにエラーが発生しました
-
14-09-2020 - |
質問
次のコードがあります。
(defn post
[title content timestamp]
(let [[innholdet tajm]
[(str "<html>
<head>
<title>" title " :: " blog_title "</title></head>
<body><h1>" title "</h1>
<br/>" content "<br/><i>posted " (Date. timestamp) "</i>
<br/><a href=\"" (str blog_url) "\">[main]</a> |
<a href=\"" (str blog_url) "/" timestamp ".html\">[permalink]</a>
</body></html>") (str timestamp".html")]]
(spit tajm innholdet)
)
)
.
上記の関数 "POST"にタイトル、内容、UNIXタイムスタンプを渡す別の関数があります。 blog_titleとblog_urlは、コードの上部に定義されているvarです。私は「実際のコード」では、AstheticsのHTMLを並べ替えました。これはそうではありません。私もやっています
(import 'java.util.Date)
(use 'clojure.string)
.
コードを実行しようとするとエラーが発生しました
java.lang.IllegalArgumentException
.
削除した場合(日付。TIMESTAMP)コードは完全に実行されますが、それを持つ必要があります(日付。)関数が必要です。
今、私は私がやるのなら
(import 'java.util.Date)
.
timestamp
でvarを定義します。(def timestamp 1278854531000) ;; Just for pushing a var into (Date.) than just the number
.
をコピーするだけで、(RET)をコピーして元のコード内のvarsを値ではなく、さまざまな関数名を表すだけです(これはRelp、およびvars、関数、および値)。元のコードが存在しない)は、次のようになります。
(let [[innholdet tajm]
[(str "<html>
<head>
<title>" (str "title") " :: " (str "blog_title") "</title>
</head>
<body><h1>" (str "title") "</h1><br/>" (str "content") "<br/>
<i>posted " (Date. timestamp) "</i><br/>
<a href=\"" (str "blog_url") "\">[main]</a> |
<a href=\"" (str "blog_url") "/" (str "1278854531000") ".html\">[permalink]</a></body></html>")
(str "1278854531000.html")]]
(println innholdet tajm))
.
今すぐ返信は私に与えます:
<html>
<head>
<title>title :: blog_title</title>
</head>
<body>
<h1>title</h1><br/>content<br/>
<i>posted Sun Jul 11 15:22:11 CEST 2010</i><br/>
<a href="blog_url">[main]</a> |
<a href="blog_url/1278854531000.html">[permalink]</a>
</body></html>
1278854531000.html
nil
.
繰り返しますが、すべてが読んで読むことがよりフレンドリーになるようにシフトされました、すべての大きな文字列ですべてが出てくる。
問題は、REPLでコードを実行して(日付。Timestamp)の値を取得できるということですが、すべてがうまく機能しますが、私のプログラムの中でそれを実行すると、上記のエラーが発生します。誰かが私がここに行方不明のものを私に言うことができるなら、誰かが私に言うことができるでしょう。
解決
単なる変更が必要です:
(defn post
[title content timestamp]
(let [[innholdet tajm]
[(str "<html>
<head>
<title>" title " :: " blog_title "</title></head>
<body><h1>" title "</h1>
<br/>" content "<br/><i>posted " (Date. **(Long/parseLong timestamp)**) "</i>
<br/><a href=\"" (str blog_url) "\">[main]</a> |
<a href=\"" (str blog_url) "/" timestamp ".html\">[permalink]</a>
</body></html>") (str timestamp".html")]]
(spit tajm innholdet)
)
)
.
しかし、文字列の代わりにタイムスタンプを長く渡す方法を把握することをお勧めします。
所属していません StackOverflow