【问题标题】:Clojure Function Naming ConventionsClojure 函数命名约定
【发布时间】:2012-05-22 06:08:31
【问题描述】:

上下文

假设我有协议 ICursor、IFoo、IBar,那么我可以有一个名为:

(defn IFoo->IBar [foo] ... )

现在,假设我有一个带有两个参数的函数

x: ICursor
y: IFoo

并输出一个 IBar 类型的对象。

现在,有什么标准方法可以在函数名中表示它吗?例如,以下都不起作用:

(defn ICursor,IFoo->IBar [x y] ...)

因为“,”被视为空格

(defn (ICursor, IFoo)->IBar [x y] ... )

因为 () 被视为函数应用程序。

(defn [ICursor, IFoo]->IBar [x y] ... )

因为 [] 被视为向量。

问题

是否有一种标准方法可以在函数名称中对协议类型的参数进行编码?

谢谢!

【问题讨论】:

  • *+!-_? 是符号中的有效字符。你可以使用ICursor+IFoo->IBar

标签: clojure


【解决方案1】:

我不认为有任何这样的推荐方式,它似乎是一种类型注释。在link 上,有一个这样的项目围绕为 clojure 代码提供类型注释。

您可以使用类似:(defn ICursor->IFoo->IBar [x y] ...) 表示该函数将 ICursor 和 IFoo 作为参数并返回 IBar,所以基本上最后一个类型是返回类型,在此之前一切都是参数类型,但我不确定是否可以一个长期或惯用的解决方案,因为方法实际名称在哪里 :) 这很重要,然后键入注释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多