我想這個不僅是只有我會遇到的問題, 大概也是所有 Programming 的人都有的疑惑 (應該是吧?)
什麼引數?? 什麼參數?? 天啊... 到底是誰翻譯的呀!!!!
就字面上來看... 講句實在話, 我真的不了解, 大概是學藝不精所致.
也許有些人認為 => 管它那麼多!! 寫得出來就好了!!
不過龜毛如我, 我還是想搞清楚定義是什麼!
* 翻譯為引數的原文為 Argument
書[1]裡寫的說明為: 當你呼叫函式的時候, 你可以放在括號內的東西,
doStuff("a", 2); //呼叫 doStuff, 所以 a 和 2 是引數
* 翻譯為參數的原文為 Parameter
書[1]裡寫的說明為: 放在函式的標記式, 用來說明這個函式, 當它被呼叫時必須接收到什麼樣的資料,
void doStuff(String s, int a) {} // 我們預期兩個參數: String 和 int
書上說明似乎很清楚, 看完之後彷彿有種豁然開朗的感覺, 好像... 好像懂了!!!
原來引數是呼叫函式時輸入的資料, 而參數是定義函式時的資料形態
真的是這樣嗎??
換個例子試試看
int sumValue;
int value1 = 10;
int value2 = 20;
sumValue = sum(value1, value2);
int sum(int v1, int v2) {
return v1 + v2;
}
所以在這個範例中, 什麼是引數? 什麼是參數?
依據得到的結論, 引數是 value1 和 value2, 參數是兩個 int
然而這樣的答案卻讓我很困惑, 既然引數可以是變數, 那為什麼還要跟參數做區別呢?
於是到網路上搜尋關於引數與參數的資料, 想要搞清楚這是怎麼一回事.
經過一番搜尋, 找到一個非常清楚的說明[2]
所以, 之前那個例子中, 什麼是參數? 什麼是引數?
函式 sum 有兩個參數, 個別為資料形態為 int 的 v1 與資料形態為 int 的 v2
引數不是 value1 或 value2, 而是在呼叫 sum 這個函式時, 輸入的 value1 和 value2 那時的實際數值, 個別為指派給參數 v1 的 10 與指派給參數 v2 的 20
花了一些時間才搞懂這兩個名詞的定義, 或許有人會覺得沒有意義.
但對我來說, 定義了解的越清楚, 代表基礎打的越好, 除了在溝通上不會因為彼此用語不同而造成誤解外, 更重要的是, 自己遇到問題要表達時, 不會讓別人聽不懂.
註[1] - SCJP Java 5.0 專業認證手冊 - 碁峰資訊股份有限公司
註[2] - Wikipedia Parameter (computer science)
什麼引數?? 什麼參數?? 天啊... 到底是誰翻譯的呀!!!!
就字面上來看... 講句實在話, 我真的不了解, 大概是學藝不精所致.
也許有些人認為 => 管它那麼多!! 寫得出來就好了!!
不過龜毛如我, 我還是想搞清楚定義是什麼!
* 翻譯為引數的原文為 Argument
書[1]裡寫的說明為: 當你呼叫函式的時候, 你可以放在括號內的東西,
doStuff("a", 2); //呼叫 doStuff, 所以 a 和 2 是引數
* 翻譯為參數的原文為 Parameter
書[1]裡寫的說明為: 放在函式的標記式, 用來說明這個函式, 當它被呼叫時必須接收到什麼樣的資料,
void doStuff(String s, int a) {} // 我們預期兩個參數: String 和 int
書上說明似乎很清楚, 看完之後彷彿有種豁然開朗的感覺, 好像... 好像懂了!!!
原來引數是呼叫函式時輸入的資料, 而參數是定義函式時的資料形態
真的是這樣嗎??
換個例子試試看
int sumValue;
int value1 = 10;
int value2 = 20;
sumValue = sum(value1, value2);
int sum(int v1, int v2) {
return v1 + v2;
}
所以在這個範例中, 什麼是引數? 什麼是參數?
依據得到的結論, 引數是 value1 和 value2, 參數是兩個 int
然而這樣的答案卻讓我很困惑, 既然引數可以是變數, 那為什麼還要跟參數做區別呢?
於是到網路上搜尋關於引數與參數的資料, 想要搞清楚這是怎麼一回事.
經過一番搜尋, 找到一個非常清楚的說明[2]
Parameter - A parameter is an intrinsic property of the procedure, included in its definition
Argument - The arguments are the values actually supplied to the procedure when it is called這就清楚多了, 參數是屬於函式定義的屬性, 而引數是呼叫函式時提供給函式的實際數值.
所以, 之前那個例子中, 什麼是參數? 什麼是引數?
函式 sum 有兩個參數, 個別為資料形態為 int 的 v1 與資料形態為 int 的 v2
引數不是 value1 或 value2, 而是在呼叫 sum 這個函式時, 輸入的 value1 和 value2 那時的實際數值, 個別為指派給參數 v1 的 10 與指派給參數 v2 的 20
花了一些時間才搞懂這兩個名詞的定義, 或許有人會覺得沒有意義.
但對我來說, 定義了解的越清楚, 代表基礎打的越好, 除了在溝通上不會因為彼此用語不同而造成誤解外, 更重要的是, 自己遇到問題要表達時, 不會讓別人聽不懂.
註[1] - SCJP Java 5.0 專業認證手冊 - 碁峰資訊股份有限公司
註[2] - Wikipedia Parameter (computer science)
留言