官术网_书友最值得收藏!

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關鍵字返回結果。可以發現,兩者的結果其實沒有差別。

主站蜘蛛池模板: 三门峡市| 甘德县| 卓尼县| 同仁县| 安塞县| 七台河市| 通河县| 南溪县| 聂拉木县| 肇庆市| 石景山区| 舟山市| 桐柏县| 漳浦县| 如东县| 田东县| 林芝县| 确山县| 福贡县| 吉林省| 鄂尔多斯市| 周宁县| 遵化市| 厦门市| 马关县| 永州市| 祁东县| 民和| 新竹县| 安吉县| 明光市| 贵定县| 平远县| 辽中县| 台前县| 阿荣旗| 昭觉县| 邛崃市| 柘城县| 巩留县| 新竹市|