大家好 我是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的東西來說明。