generics - 什么是 `ANY` ,它与 `Any` 有何不同?

标签 generics types julia jit

在最近的 Julia 的 0.5 nightlies 中,我开始注意到名为 ANY 的类型参数。 ,限制为 Any 的子类型.
这当然总是正确的,因为所有类型都是 Any 的子类型

例如:

serialize(s::SerializationState, x::ANY<:Any) at serialize.jl:468
show(io::IO, x::ANY<:Any) at show.jl:85
methods(f::ANY<:Any) at reflection.jl:258
methods(f::ANY<:Any, t::ANY<:Any) at reflection.jl:247

那么发生了什么?
这是一种鼓励编译器在 JIT 中生成专用函数的技巧吗?

最佳答案

ANY是一种向编译器提示它不应该专门处理参数的技巧。否则,编译器将考虑在调用它们的所有参数的特定类型上专门化函数,这在某些情况下最终可能会生成大量不必要的代码。这是一种肮脏的黑客攻击,更通用的机制会更好,但它可以完成工作。

关于generics - 什么是 `ANY` ,它与 `Any` 有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37180751/

相关文章:

generics - 如何在 Scala 中设置多个类型界限?

ios - 在运行时定义类型别名

javascript - 为什么 TypeScript 使用 "Like"类型?

julia - 将一个变量的数组插入一个数组中

java - 无法使用 scala 参数化类型覆盖 java 泛型函数

oracle - PL/SQL 编译错误 - PLS-00382 : expression is of wrong type

apache-spark - 使用 dataframe.schema VS dataframe.printSchema() 比较 pyspark 模式

julia - 如何使用 mxnet.jl 和 Julia 获得梯度节点?

dataframe - 如何绘制各县的男性和女性折线图?

ios - 如何使用泛型作为参数?(Swift 2.0)