Julia函数作为参数

函数作为参数

函数作为Julia中的对象,除了能够直接进行赋值等操作外,还可以作为其他函数的参数。例如,定义一个名为g的函数,其第一个参数是函数,代码如下:

julia> function g(f, x, y)
          f(x, y)
        end
g (generic function with 1 method)

不过此时最好能限定参数为Function类型,即:

julia> function g(f::Function, x, y)
          f(x, y)
        end

此后,便可将已有的函数名直接作为参数传入进行调用,例如:

julia> g(addtwo, 1, 2)
3

运算符同样也可以作为函数参数,例如:

julia> g(+, 1, 2)
3

或者:
Julia函数作为参数

不过函数实参采用的是“传值”方式,而不是引用传递;如果在内部被改变,不会影响外部原来的定义。例如:

julia> function h(f, x, y)
          f = -
          f(x, y)
        end
h (generic function with 1 method)

julia> h(addtwo, 1, 2)
-1

julia> addtwo(1, 2)
3

其中,addtwo传入h()后,被修改为减法运算符,但在外部调用addtwo()时仍是原来的加法。

显而易见,函数对象可以作为参数的默认值。例如:

julia> function h(x, y, f = addtwo)
          f(x, y)
        end
h (generic function with 2 methods)

julia> h(1, 2)                        # 默认使用addtwo()函数对象
3

julia> h(1, 2, -)                     # 调用加法运算符
-1

其中h()将其函数参数f默认为addtwo()函数,当未提供时会被隐式地调用,执行x与y的加法操作;提供了特定的函数(运算符)-之后,内部便以实际提供的方法进行处理。

提示
函数对象在作为参数时并没有特别的限制,在开发中灵活地应用,能够让程序具备所需的灵活性与延展性。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!