Julia函数作为返回值

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函数作为返回值

若是觉得这样不方便,可以先将返回的函数对象绑定到一个变量上,再进行调用,例如:
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特有的编程范式。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!