Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 具有不同参数子类型的Julia函数_Function_Types_Julia - Fatal编程技术网

Function 具有不同参数子类型的Julia函数

Function 具有不同参数子类型的Julia函数,function,types,julia,Function,Types,Julia,在Julia中,我可以定义一个函数,通过执行 function foo{T<:Type}(bar::T, arg::T) end 但是对于一个有多个参数的函数来说,它会变得相当麻烦。如果在T左侧使用的类型,我只需将其写成 function foo(bar::MyType, arg::MyType) ... end 在函数内部,如果需要具体类型,请使用typeof(bar)和typeof(arg)。这些是常量,因此不会影响性能 当然,我假设您的意思是类型是一些用户定义的类型,而不

在Julia中,我可以定义一个函数,通过执行

function foo{T<:Type}(bar::T, arg::T) end

但是对于一个有多个参数的函数来说,它会变得相当麻烦。

如果在
T左侧使用的类型,我只需将其写成

function foo(bar::MyType, arg::MyType)
    ...
end
在函数内部,如果需要具体类型,请使用
typeof(bar)
typeof(arg)
。这些是常量,因此不会影响性能

当然,我假设您的意思是
类型
是一些用户定义的类型,而不是内置的
类型
类型

即使参数是数组,函数也不需要参数化编写。这样做完全可以

function foo(bar::AbstractArray, arg::AbstractArray)
    ...
end

如果需要,在函数内部使用
eltype(bar)
eltype(arg)
。但是,如果需要
eltype
s,我个人会使用参数化形式。

仅提及,如果
bar
arg
的类型不是参数化的,则不需要使用参数化方法。e、 g.
函数foo{T@GnimucK.我知道,但它们都是数组。我应该说得更具体些,但我实际上是在编写
函数foo{T@Mauricio:是的,那么我更喜欢参数化方法。嗯,我认为重点是避免函数检查。此外,我不确定如何在不指定类型的情况下指定维度,或者我是否缺少一些明显的内容?您可以使用
typealias
指定维度。但正如我在回答中所说,我更喜欢参数化形式
>{TSo没有速记。悲哀。我真的在写
函数foo{T}
 function foo{T<:Type, U<:Type}(bar::T, arg::U) ... end
typealias FastInt Union{ Int32, Int64 }  # division is fast
typealias SlowInt Union{ Int8, Int128 }  # slightly slower

foo{T<:Integer}(a::T, b::T) ... end; # default/fallback 
foo{T<:FastInt}(a::T, b::T) ... end; # specialized for fast types
foo{T<:SlowInt}(a::T, b::T) ... end; # specialized for slow types
function foo(bar::MyType, arg::MyType)
    ...
end
function foo(bar::AbstractArray, arg::AbstractArray)
    ...
end