- Julia機器學習核心編程:人人可用的高性能科學計算
- 朱紅慶
- 636字
- 2020-07-28 11:01:35
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關鍵字返回結果。可以發現,兩者的結果其實沒有差別。