Julia中参数的类型特异性

Julia中参数的类型特异性,julia,Julia,在下面的场景中,声明函数的更好方法是什么 addnum(x::Float,y::Float) = x + y vs Julia手册敦促避免编写过于具体的类型。什么时候首选前者,什么时候首选后者?除非您使用类型规范覆盖函数的不同版本,否则通常最好干脆删除类型注释: addnum(x,y)=x+y 因为这允许函数也适用于整数和复杂类型,并且编译可以在编译时自动专门化函数。在参数只能接受浮点值的情况下,哪个定义更适合float vs.Float32 vs.Float64?什么决定了使用哪种类型定义?

在下面的场景中,声明函数的更好方法是什么

addnum(x::Float,y::Float) = x + y
vs


Julia手册敦促避免编写过于具体的类型。什么时候首选前者,什么时候首选后者?

除非您使用类型规范覆盖函数的不同版本,否则通常最好干脆删除类型注释:

addnum(x,y)=x+y


因为这允许函数也适用于整数和复杂类型,并且编译可以在编译时自动专门化函数。

在参数只能接受浮点值的情况下,哪个定义更适合float vs.Float32 vs.Float64?什么决定了使用哪种类型定义?因为编译器很可能使用Float64保持类型稳定性最好,所以我会使用Float64,因为所有版本的Julia都是用它来计算浮点的,除非有理由认为您将不得不使用不同类型的浮点(例如,某些图像数组元素类型是较小的浮点类型)。但如果它起到了作用,我会感到惊讶。无论如何,我肯定会说删除类型批注。只有在需要将其作为错误捕获时才使用批注,如果它不是浮点数。如果使用
Float64
,如果它得到
Float32
,它将失败,因此
AbstractFloat
更好。(
float
不存在。)它在整数、有理数、大浮点、复数等方面也会失败。
Float
你的意思是
AbstractFloat
?正如格言所说:“严格键入类型,松散键入函数”。
addnum(x::Float64,y::Float64) = x + y