跳到主要內容

引數?! 參數??!! 什麼鬼啊!!

我想這個不僅是只有我會遇到的問題, 大概也是所有 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]
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)

留言

Jerry寫道…
感謝,受益良多^^

這個網誌中的熱門文章

雙面陷阱

衝著「別相信任何人」的名號,看到第一眼就買下了這本書。
我想,一部作品,之所以感動,不外乎讀者心中想法的投射抑或預期,得以透過作者的巧手與詞彙,以第三人的角度陳述出動人精彩的篇章。
而,這就是這樣的一部作品。

「雙面陷阱」很貼近生活,非常貼近使用網路的現代人生活,也道出了許多流連網路世界人們的真實,我,深感認同。如同「別相信任何人」一般,很難被翻拍成電影,許多內心層面的描述與畫面的細節,即使得以具象化,要在短短的一到二個小時把這麼精彩的內容濃縮、表達出作者和導演想呈現的意向亦非易事。看過電影的你們,拿起書本讀一讀,我相信會有不同感受的。

因此,曾經讀過作者前部作品的朋友們,入手吧!不會失望的!

PS. 個人覺得原文的書名 Second Life(第二人生),更貼近整部作品的主軸,不曉得看完這部作品的你們,是否也認同?

[註] 封面圖片引用自 誠品網路書店 - 雙面陷阱

回顧

許久沒有和文字交流,總覺得,以往熟悉的詞彙,似乎已離我遠去,
倒也是該好好跟我抗議這麼長時間的視而不見與疏遠 ......
儘管如此,還是覺得,找到些機會能留下自己的樣子蠻好的,
無論是哪一面,好的、壞的、自信的、羞赧的,回顧起來都有種存在感。

今日聽說了蠻照顧我的前輩轉至北部從事教職,
打從心底為他開心,也感到羨慕,羨慕有方向、有目標的未來。

已不記得距離前次書寫與生活相關的電子郵件有多久,
一股腦兒的把所有曾經的、想寫的祝福全部寫上,
戲謔的打聲招呼,聽到了久違的問候,
彷彿身處還在學校裡為了學習而煩惱的時光。

今年三月,告別了奮鬥多時的前個階段,
上個月底,揮別了一同打拼半年的夥伴,
這些分開與相遇,總感覺來得太快,連喜悅與悲傷都還沒準備好就已經結束。

無緣由的聚首,
又莫名的有了距離,
可跨越的屏障、無法超越的時空,
約定了卻沒履行、未有過允諾卻偶然發生,
原本在這些以往的無所謂,卻隨著年紀漸增,逐漸在心底留下了重量。

以為搬開了,卻留下了大小不一的印子,
走著走著,搖搖晃晃,不經意的絆倒,再次看清這些印在心中的痕跡,原來從來都沒消失。