Types 将类型与引用类型的变量关联的奇怪语法
在引用类型的示例中,提供了:Types 将类型与引用类型的变量关联的奇怪语法,types,clojure,clojure-core.typed,Types,Clojure,Clojure Core.typed,在引用类型的示例中,提供了: clojure.core.typed=> (cf (let [a (ann-form 1 Any)] (cond (symbol? a) a (number? a) a))) (U Sym Num nil) 为什么要使用(ann表格1任何)?我想通过注释1然后将a设置为该值来设置a的类型是一种老
clojure.core.typed=> (cf (let [a (ann-form 1 Any)]
(cond
(symbol? a) a
(number? a) a)))
(U Sym Num nil)
为什么要使用
(ann表格1任何)
?我想通过注释1
然后将a
设置为该值来设置a
的类型是一种老套/惯用的方法,但我真的不明白为什么选择这种语法来做这件事。ann form
只是忘记了关于特定表达式的类型信息
<>这里我们忘记<代码> 1 >代码>是<代码>(Vall 1)< /C>,并考虑它的类型<代码>任何程序其余部分。通过这种方式,我们可以演示引用类型如何与Any
类型的本地绑定一起工作
你也可以这样写:
所以我想澄清一下,1是按惯例使用的,但可以是任何值?为什么必须为
a
(而不仅仅是类型)赋值才能使事件类型工作?我的同事向我解释说,变量不能在不给它赋值的情况下声明,所以忽略我的Clojure n00b问题。现在对我来说,这一切都是有意义的(假设我是对的,1只按约定使用,而不是任意值)。是的,用任何值替换1。将let
更改为fn
并仅传递1可能是一个更清楚的示例。
(let [a :- Any, 1]
(cond
(symbol? a) a
(number? a) a))