gpt4 book ai didi

string - 如何通过静态方法在 clojure 中进行 comp ?

转载 作者:行者123 更新时间:2023-12-03 10:57:38 25 4
gpt4 key购买 nike

我似乎在访问 Integer.parseInt 时遇到问题在补偿我可以像这样正常访问它:

user=> (Integer/parseInt "123")
123

但是如果我把它放在 comp 中,我会得到一个错误:
user=> (def vect-to-int (comp Integer/parseInt (partial apply str)))
java.lang.Exception: Unable to find static field: parseInt in class java.lang.Integer (NO_SOURCE_FILE:3)

在我看来,当它应该寻找方法时,它试图在 Integer 上找到一个字段。我如何使用 Integer.parseInt像这样?是否有更好的方法将字符向量转换为 int ?

最佳答案

Clojure 函数是 java 方法,但 java 方法不是 clojure 函数例如 Clojure 函数具有元数据等。如果你想使用一个调用 Clojure 函数的 java 方法,那么你有两个选择来包装它,memfnfun or #( ) memfn 是一个过时的函数,它在 clojure 函数中包装了一个 java 方法(即使不经常使用它,也很高兴知道它存在)。包装java方法的普遍接受的方法是:

#(. instance method arg1 argN)  

或者对于静态方法
#(Class/MethodName arg1 argN)

关于string - 如何通过静态方法在 clojure 中进行 comp ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2208865/

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