ClojureScript库Om Next使用了静态协议。我以前从未见过这种方式,想知道它是Om特有的概念还是语言的实际部分。以下是简化的代码片段:
(deftype type
static IProtocol
(some-method [this] "val"))
这个到底是做什么的?(在REPL中输入它不会出现任何错误,所以我认为它与Om无关)。
ClojureScript库Om Next使用了静态协议。我以前从未见过这种方式,想知道它是Om特有的概念还是语言的实际部分。以下是简化的代码片段:
(deftype type
static IProtocol
(some-method [this] "val"))
deftype是一种低级特性,它是Clojure语言的构建方式。它在核心上只是一个Java类构造器,用于设置字段和方法。Java中的static是一个关键字,表示所声明的方法是类的成员,而不是类的实例成员,因此可通过继承全局使用。 defui是一个宏,与deftype非常相似,但不是用于类的构造器,而是用于javascript对象原型的构造器,这些原型是类比的。主要区别在于它不需要字段只需要方法。对象原型可以被实例化,因此为了使所有实例都能统一使用行为,它们需要具有静态字段。
static
关键字只适用于 Om 中的defui
宏吗?还是它也可以像deftype
一样使用,并以类似的方式(但使用字段,使它们静态)? - George