![]() |
1
18
Clojure构建在JVM上。 JVM不支持开箱即用的一级函数或lambda。从JVM的角度来看,每个Clojure函数一经编译,就成为自己的匿名类。从技术上讲,每个函数都是自己的类型。 它变成的阶级 工具 |
![]() |
2
21
每个Clojure函数都被编译成一个Java类,该类实现
|
![]() |
3
5
您看到的(“user$eval7$fn\u8”)是Clojure为实现您定义的匿名函数而创建的内部生成的内部类的名称。
注意,类实现了接口clojure.lang.IFn-这适用于所有Clojure函数。 |
![]() |
4
2
我是个新手,但我要大胆一点。首先,我们对函数的“类型”有两种不同的含义,一种是clojure内部的java接口和类,另一种是作为编程概念的函数类型。采用第二种方法,函数的类型将是其返回值的类型(或其参数类型和返回值类型): 1) 我想所有函数都实现了 IFn 接口,不管它们当前的类是什么 2) clojure自动生成的类名在函数是匿名的或命名的情况下会有所不同,但在这两种情况下似乎都是内部类(通常它们的名称用$分隔,从外部类到内部类) 3) 如果在函数定义中对其进行注释,则返回值的类型可以在函数元数据的:tag键中。例如,您公开的函数类将class作为其返回类型,因为在其def中,名称前面有一个^class。 我假设您熟悉java(或类似的oop语言),如果不熟悉的话,我很抱歉 |
![]() |
Terio · Typescript:使用变量的值创建自定义类型 2 年前 |
![]() |
Kareem Adel · 创建函数类型(TypeScript接口) 2 年前 |
![]() |
MatÄj VondráÄek · 如何在c#方法中传递类型? 2 年前 |
![]() |
kreo · 为什么&[T]参数也接受&Vec? 6 年前 |
![]() |
Jiji · 将简单对象强制转换为简单的通用接口 6 年前 |