标签: singleton julia
Julia的一个很酷的功能是,值可以用作类型,至少作为类型参数。例如,可以断言数组具有特定维度,例如x :: Array{Int,2}。我的问题是:Julia如何做到这一点以及Julia的用户如何获得这种权力?我假设2被转换为或解释为某种单一类型的2。我很想知道转换的功能是什么。我试图断言2 :: Type{2}和isa(2, Type{2}),但只有在2被实际类型替换时才会断言单例。
x :: Array{Int,2}
2
2 :: Type{2}
isa(2, Type{2})
答案 0 :(得分:1)
您无法定义自己的可变元并将它们用作单例类型(尚未)。
目前,jltypes.c中定义的static int valid_type_param(jl_value_t *v)返回true的任何内容都可以用作类型参数。有一个TODO可以添加更多类型,你可能只需要一个引人注目的用例来获取改变行为的帮助。
static int valid_type_param(jl_value_t *v)
<强>更新强>: 另请参阅关于types:的手册文档。抽象和具体类型都可以通过其他类型和某些其他值(当前整数,符号,bool和其元组)进行参数化。当不需要引用或限制类型参数时,可以完全省略它们。