相关疑难解决方法(0)

协议中的提示返回类型是否在Clojure中有任何影响?

您可以在协议中提示返回类型

(defprotocol Individual
  (^Integer age [this]))
Run Code Online (Sandbox Code Playgroud)

并且编译器将使您的方法符合:

(defrecord person []
  Individual
  (^String age [this] "one"))

; CompilerException java.lang.IllegalArgumentException: Mismatched return type: age, expected: java.lang.Object, had: java.lang.String, ...
Run Code Online (Sandbox Code Playgroud)

但是您不必遵守类型提示:

(defrecord person []
  Individual
  (age [this] "one"))

(age (new person))
; "one"
Run Code Online (Sandbox Code Playgroud)

类型提示有效吗?


这是一个跟进可以在clojure defrecord中指定方法的返回类型吗?

clojure

7
推荐指数
1
解决办法
800
查看次数

标签 统计

clojure ×1