`where {t :< Integer}` 在 Julia 函数声明的上下文中是什么意思?

log*_*ick 5 julia

我在其他人的代码中看到了以下内容,但我从未用自己的代码编写过,因为我不明白发生了什么。

举个例子:

function add(x::T, y::T) where {T :< Integer}

我猜它T被转换为一个整数,然后用于显式输入xy。但是为什么不直接做 x::Int64呢?是否where {T :< Integer}允许像Int32and这样的任何 Int 类型Int64

Wol*_*olf 5

稍微扩展一下奥斯卡的回答:

Usingfunction add(x::T, y::T) where {T :< Integer}允许您向函数添加参数方法add(x, y)。您可以在Parametric Methods下的Julia 文档中更详细地了解这一点。

这有两大优点:它允许您定义合理的通用方法(因为在许多情况下,整数的确切类型不会真正影响函数定义)。同时它允许您限制x, y对相同类型的调用,这可以提高类型稳定性并导致更高效的编译代码。