gpt4 book ai didi

java - 在 Clojure 中 : Error executing a Java call with let inside a function but not in REPL

转载 作者:搜寻专家 更新时间:2023-11-01 03:29:53 24 4
gpt4 key购买 nike

我有以下代码:

(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)
)
)

我有另一个函数将标题、内容和 UNIX 时间戳传递给上面的函数“post”。 blog_title 和 blog_url 是在代码顶部定义的变量。我已经对 HTML 进行了美学排序,在“真实代码”中并非如此。我也在做

(import 'java.util.Date)
(use 'clojure.string)

如果我尝试执行代码,我会得到一个错误

java.lang.IllegalArgumentException 

如果我删除 (Date.timestamp) 代码会完美执行,但我需要有那个 (Date.) 函数。

现在,如果我在 REPL 中执行

(import 'java.util.Date)

然后定义一个带有时间戳的var

(def timestamp 1278854531000) ;; Just for pushing a var into (Date.) than just the number

然后我只是将 (let) 复制到 REPL 中并调整原始代码中的变量,而不是只表示不同的函数名称而不是值(因为这是 REPL 和变量、函数和值原始代码不存在),就像这样:

(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))

现在 REPL 给我:

<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 中,所有内容都以一个大字符串显示。

这里的问题是我可以在 REPL 中执行代码并获取 (Date.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)
)
)

但是,我仍然建议您想办法将时间戳作为长而不是字符串传递。

关于java - 在 Clojure 中 : Error executing a Java call with let inside a function but not in REPL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3231244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com