highlight.js

星期二, 7月 17, 2012

詞辨:parameter 與 argument

閱讀程式設計的文章時, 常會看到 parameter 與 argument 兩個詞, 在中文中可能都會被翻譯為「參數」或是「引數」, 不過這兩個詞嚴格來說, 是有不同的意義的。追本溯源, 這兩個詞來源自數學中的函數, parameter 指的是在定義函數時給定的變數, 而 argument 指的是使用該函數時實際傳遞給函數的資料。轉換到程式設計中也是一樣, 假設有個 foo 函數, 定義如下:
void foo(int n)
{
    .....
}
那麼 n 就是 parameter, 而在呼叫此函數時, 可能是這樣:

foo(20)
或是
foo(x)
此時 20 或是 x 就是 argument。

在某些程式語言中, 也會把 parameter 稱為 formal parameter, 而將 argument 稱為 actual parameter, 前者表示只是形式上的參數, 告訴程式呼叫此函數時, 需要傳入的資料個數與型別, 而後者表示實際上傳給函數的資料。如果要中文化, 這還真是難倒我了, 但若是 formal parameter 譯為「形式參數 」、actual parameter 譯為「實際參數」, 倒還可以, 但要想兩個詞彙分辨 parameter 與 argument , 還真是有點難啊!目前較通用的翻譯是 parameter 為「參數」、argument 為「引數」, 姑且可以看成「參考格式」、「實際引用」的意思吧。

5 則留言:

匿名 提到...

原來如此!

MaxVip帳號小組 提到...

Great explained

Phoebe 提到...

消化您的文章範例之後的理解是 20 這個 argument 是可以改變的,隨著 argument 改變之後的函數式運算結果 foo(int n) 就會跟著改變?

以手沖一杯好咖啡來舉例,要沖一杯好咖啡需要三個參數 parameter:咖啡粉研磨的顆粒粗細(G)、沖煮的水溫(C)、沖煮時要用的總水量(V)。例如咖啡粉都是用20公克,但水量240cc或300cc回傳的結果就是口感濃厚或者口感清爽。240cc或300cc就是所謂的 argument,而需要用足夠的水量才能萃取出來一杯咖啡,我們就先幫水量這個要素取一個固定的名稱(V),因為名稱不改變,所以叫 formal parameter?

meebox 提到...

你這個手沖咖啡的比喻很恰當, 我很喜歡

匿名 提到...

Very helpful! Thanks a lot :)