繁体   English   中英

在Clojure函数参数定义中使用^

[英]Use of ^ in clojure function parameter definition

(defn lines
  "Given an open reader, return a lazy sequence of lines"
  [^java.io.BufferedReader reader]
  (take-while identity (repeatedly #(.readLine reader))))

这行是什么意思? -> [^java.io.BufferedReader reader]

我也知道这是一个愚蠢的问题。 您能给我看看我自己可以阅读的文档吗? 这样我就不必在这里问了:)

您可以在此处找到文档:

https://clojure.org/reference/java_interop#typehints

Clojure支持使用类型提示来帮助编译器避免在性能关键的代码区域中进行反射。 通常,除非存在已知的性能瓶颈,否则应避免使用类型提示。 类型提示是放在编译器使用的符号或表达式上的元数据标签。 它们可以放在函数参数,让界名称,变量名称(定义时)和表达式上:

 (defn len [x] (.length x)) (defn len2 [^String x] (.length x)) ... 

将类型提示放在标识符或表达式上后,编译器将尝试在编译时解析对方法的任何调用。 另外,编译器将跟踪任何返回值的使用以及用于其用途的推断类型,依此类推,因此只需很少的提示即可获得完整的编译时解析的调用。

您还应该签出:

永远不会永远不会打开浏览器选项卡的Clojure CheatSheet


您可能还希望查看此答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM