使用 splat 运算符时如何(是否可能)注释参数类型?
f(x, y) = x^2 + y^2
vec = [1.0, 2.0, 'a']
f(vec[1:2]...)
我如何注释
...
的使用在函数调用中。另请注意,查看代码的宏( @code_llvm
、 @code_lowered
、 @code_native
、 @code_typed
、 @code_warntype
)都不起作用,因此在使用 splat? 时很难优化?
最佳答案
因为似乎在上述用例中,反射函数的宏版本无法达到正确的参数类型,使用原始函数而不是宏可能会有所帮助:
f(x, y) = x^2 + y^2
vec = [1.0, 2.0, 'a']
@code_warntype(f(vec[1:2]...)) # => Nothing
code_warntype(f,map(typeof,vec[1:2]))
# Variables:
# x::Float64
# y::Float64
# .....
这个逻辑适用于所有反射宏,使用带有
(function, collection of types)
的变体函数.引用:
关于julia - 如何使用 splat 运算符注释类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33850907/