上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
3.2 函数参数
到目前为止,我们一直在讨论Julia中的函数语法,以及如何创建一个函数。当我们讨论函数时,一个非常重要的方面就是参数。毫无疑问,在其他语言中几乎都使用过参数,并且参数可以通过值或者引用传递。
但是Julia却不同,在Julia中参数是通过分享传递的。为了搞清楚什么是分享传递,让我们先看一下值传递和引用传递这两种常用的方法。
3.2.1 值传递和引用传递
当我们说传值的时候,则意味着无论给函数传递什么参数,函数都会将这个参数复制一份,即相同变量的拷贝会被传递给函数。
当我们说通过引用传递参数时,则意味着参数的引用或者位置也会传递给该函数,不会进行拷贝操作而将值传递给函数。
3.2.2 分享传递
当通过分享传递时,当作参数传递的变量不会被复制。相反,函数参数本身充当新的绑定,函数参数就是被传递的变量本身。
3.2.3 return关键字
使用return关键字将会终止一个函数的执行并将控制返回给调用函数。Julia中的函数可能会显式使用return来返回一个值。如果没有return,Julia会计算并返回最后一个表达式的值。例如,下面的代码返回的值是相同的。
【范例3-6】使用return和不使用return的对比
我们定义两个相似的函数来进行对比。
01 julia> function add_without_return(x,y) # 不使用return关键字, 02 返回最后一个表达式的值 03 x+y 04 end 05 add_without_return (generic function with 1 method) 06 julia> add_without_return(6,7) 07 13 08 julia> function add_using_return(x,y) # 使用return关键字 09 return x+y 10 end 11 add_using_return (generic function with 1 method) 12 julia> add_using_return(6,7) 13 13 14 julia> add_without_return(6,7) == add_using_return(6,7) 15 true
代码01~04行定义了一个函数,其作用是将传入的两个参数相加,但是这里没有使用return关键字返回结果。代码08~10行定义了另外一个函数,其作用与上一个函数相同,但是使用了return关键字返回结果。可以发现,两者的结果其实没有差别。