繁体   English   中英

Clojure功能检查

[英]Clojure Function check

当我的程序中有3个功能时,如何检查特定的功能名称? 为了功能选择,我想知道这些功能的名称。

假设线性内核函数,logistic内核函数和非负函数,当我调用程序时,将调用其中一个函数,因此我应该检查它是线性,logistic还是非负函数,因此我可以执行与所选功能相关的另一个功能。

我认为进行函数选择将节省重复代码的时间。 但是进行功能选择可能不是我可以在Clojure中使用的最佳设计。

仅供参考,在此级别上,我已经使用“元”关键字来访问函数名称,但是当我创建时

(defn isKernel [krn]
  (if (= (str (:name (meta #'krn))) "logistic-kernel") 1 0))

编译器无法解析“ krn”变量

在Clojure中,函数是值,就像数字4一样。这是大多数语言(和一般的函数式编程)基础的重要组成部分。 大多数情况下,我们不需要将函数存储在vars中 函数作为值没有名称 *因此,与其检查传递的函数的名称是否与已知名称匹配, 不如问“ 该函数的值是否与存储在var中的函数相同 ”更有意义。 @cgrand指出,只需调用=即可完成此操作。

如果您正在执行这种调度,则存在很大的变化,那就是协议比滚动自己的协议是更好的工具

*它们确实具有用于创建递归函数文字的名称,尽管那不是我在这里得到的。

暂无
暂无

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

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