LV. 20
GP 452

【攻略】CSO lua零基礎小教室(二)函式

樓主 misk yrgna1234
GP12 BP-
大家好 我是misk
上次講解了程式的基本動作
分別是宣告,判斷,運算
這次要講解的是"函式"
我認為這對初學者來說這會比較困難
建議可以拿紙筆實際理解一次比較能順手喔!

如果還沒觀看第一章,請前往傳送門:




函式
函式非常重要,如果不會這個就不用想學API了,我們一樣慢慢解釋。

1.函式是什麼?
簡單來說,函式就像是一部機器,它能讓寫程式的人"操控",並且會生產東西。

2.函式的宣告
我們直接拿例子來解說。

當我們要宣告函式時,我們需要在名字前面加上一個"function",這是要讓程式知道這是一個函式。
而這個例子的意思是,我們宣告了一個名字為test的函式,並且宣告到有end的地方,
也就是value = 1(請記住:test()後面不用再加then)。

再來,剛剛說了這個只是函式的"宣告",並不是"使用"它,所以程式在執行的時候,
它只會解讀說:我了解這部機器了,
而不是:我現在要使用這部機器了。

3.函式的使用
那我們要如何讓程式"使用"呢?我們需要在程式碼中呼叫它,直接上例子。

我們可以看到,在第5行我們打出了這個函式的名字,代表我們呼叫它了,請記住:
呼叫方式為test()而不是test
那你會問說,這個括號是做什麼用的?
下面解釋給您聽。

4.參數
我們剛剛說了函式就像是一部機器,它能做操控的動作
但我們要如何寫出能操控的函式?
我們要如何操控?
很簡單,我們看個例子。

這次函式的宣告,你會發現括號中出現東西了,它叫做value。
其實這也是宣告變數的一種,我們在函式中宣告了value,這時我們就可以在函式內使用這個變數。

這就像一台會製造衣服的機器,你想要製造幾個?衣服要什麼顏色?
其實都是用參數去做調整的。

4.使用帶有參數的函式
我們如何操控?只要在括號內放入正確的參數就好了,看下圖。

這麼一來,當程式讀取到第5行時,value為10,並且開始執行這個函式,一樣函式的內容只有一行,也就是value = value + 1,這時的value已經被宣告並且為10了,經過運算後,此value的值就是11了。
請記住:函式結束後,函式中的value變數就會被程式捨棄,等到再一次呼叫此函數時,程式才會再建立value這個變數。

然後您可能會有疑問,就是能不能放更多參數?
當然可以,看下圖。

我們讓函式的括號出現3個參數,分別是value1,value2,value3,
第5行中,我們使用了函式,先讓value1等於10,再讓value2等於20,再讓value3等於30,之後進入函式中的內容,內容為ans = value1 + value2 + value3,也就是說,ans就為60。
宣告多個參數時,請使用逗號分隔。

5.return回傳值
我們剛剛說明過,函式像一部機器,不僅能操控外,也可以生產東西,而生產什麼東西就要靠return這個關鍵詞了。我們舉個例子:

這邊在宣告函式時,裡面多了一個return,這樣之後我們使用這個函式時,如果他執行到有return的地方時,它就會回傳一個值,並直接結束函式。我們舉個例子。

這邊我們可以看到再第7行使用了它,這邊我們說明一下順序。
1.程式由上往下,在第1行宣告了名叫test的函式。
2.在第7行宣告了一個變數a。
3.因為出現=,所以讓a等於右邊的test(10, 20, 30)。
4.因為看到了test(10, 20, 30),所以開始賦予value1,value2,value3的值,並且開始執行函式。
5.在函式中宣告一個變數ans,讓它等於10+20+30,也就是60。
6.繼續執行並看到return,因此將ans回傳,而ans為60,因此這個函式把60回傳給a變數,並且馬上結束函式。
7.a就等於60了。

6.CSO API的一堆函式
這是CSO API的部分資訊。


你會發現很多東西都是用函式去控制的,像是圖中的玩家復活或死亡。
所以為什麼我會說要學會函式才能使用api?因為當你要控制遊戲的一些元素時,就需要用到函式,如果您不知道什麼是參數,什麼是回傳,您將會學得很辛苦。

7.lua的print()函式
並不是所有函式都需要自己宣告,有些函式官方會提供,例如在上一章節出現過的print("您好"),你會發現這其實也是一個函式,print是函式名稱,"你好"就是參數。
而這個函式的意思也很簡單,就是會在console出現你放的參數,也就是會出現"您好"。
你一定會問說:我要去哪裡看?

很簡單,你可以在遊戲中按下~鍵,當您執行程式時,所有print出來的東西都會在那個地方。
一樣舉個例子。

我在game.lua寫了這兩行

執行時,我們就可以按~鍵觀看印出來的字。

還有很多好用的官方函式,這就看自己的需求再去網路上找喔!網路上有很多資源。


問題
Q:請問圖中的value最後是多少?


一樣可以在留言區討論喔!其實這些都算是基本,如果想知道更多東西可以直接上網尋找,畢竟塞太多東西會太難,所以要盡量挑比較重要,並且能連結到API的東西來說明。

下一篇請往這:



12
-
未登入的勇者,要加入 2 樓的討論嗎?
板務人員:

3667 筆精華,10/13 更新
一個月內新增 2
歡迎加入共同維護。


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】