Julia函数作为返回值
函数可以作为结果,作为其他函数的返回值。例如:
julia> function get_addtwo_func()
addtwo # 将函数addtwo返回
end
get_addtwo_func (generic function with 1 method)
julia> get_addtwo_func() # 调用该函数,结果返回函数对象
addtwo (generic function with 1 method)
addtwo
定义参考酷客教程中Julia函数基本定义
其中,get_addtwo_func()
在被调用时,返回的结果是“generic function”即函数对象,而不再是某个计算值。当然,运算符本身也可以作为结果返回,例如:
julia> function g()
+ # 将运算符+返回
end
g (generic function with 1 methods)
julia> g() # 调用该函数,结果返回函数对象
+ (generic function with 163 methods)
虽然看起来有些奇怪,但这正是Julia独具特色的地方:一切皆对象。其中的加法符号便是一个函数对象,能够像其他常规对象那样进行各种支持的操作。
如果要直接对返回的函数对象进行调用,方法并不复杂,只需在父函数调用形式后再附加返回函数的参数表即可。例如:
若是觉得这样不方便,可以先将返回的函数对象绑定到一个变量上,再进行调用,例如:
实际上,函数在定义时便会生成函数对象。可见,函数内部是可以再次定义一个函数的,例如:
julia> function getfunc()
function addthree(x, y, z)
x + y + z
end
end
getfunc (generic function with 1 method)
其中,在getfunc()
内部又定义了addthree()
函数,用于累加三个变量的值。调用后便可发现,返回的同样是“generic function”对象:
julia> add3 = getfunc()
(::addthree) (generic function with 1 method)
而且可以正常调用,例如:
julia> add3(1, 2, 3)
6
其中,add3()对传入的3个实参实现了累加操作。
对于一些简单的、通用性不强的特定函数,可以在内部单独定义,避免与外部的函数冲突。也能够在一定程度上达到逻辑集中的目的,可以成为Julia特有的编程范式。
酷客网相关文章:
评论前必须登录!
注册