solidity中函數(shù)的形式: function <function name> (<parameter types>) {internal|external|public|private} [pure|view|payable] [returns (<return types>)]
1甥材,function:聲明函數(shù)時(shí)的固定用法衡载,想寫(xiě)函數(shù),就要以function關(guān)鍵字開(kāi)頭瓢颅。
2喉钢,<function name>:函數(shù)名。
3亭病,(<parameter types>):圓括號(hào)里寫(xiě)函數(shù)的參數(shù)笆环,也就是要輸入到函數(shù)的變量類型和名字攒至。
4,{internal|external|public|private}:函數(shù)可見(jiàn)性說(shuō)明符躁劣,一共4種迫吐。沒(méi)標(biāo)明函數(shù)類型的,默認(rèn)internal习绢。????
????????public: 內(nèi)部外部均可見(jiàn)渠抹。(也可用于修飾狀態(tài)變量蝙昙,public變量會(huì)自動(dòng)生成?getter函數(shù)闪萄,用于查詢數(shù)值)。private: 只能從本合約內(nèi)部訪問(wèn)奇颠,繼承的合約也不能用(也可用于修飾狀態(tài)變量)败去。external: 只能從合約外部訪問(wèn)(但是可以用this.f()來(lái)調(diào)用,f是函數(shù)名)烈拒。internal: 只能從合約內(nèi)部訪問(wèn)圆裕,繼承的合約可以用(也可用于修飾狀態(tài)變量)。
5荆几,[pure|view|payable]:決定函數(shù)權(quán)限/功能的關(guān)鍵字吓妆。payable(可支付的)帶著它的函數(shù),運(yùn)行的時(shí)候可以給合約轉(zhuǎn)入ETH吨铸。包含pure跟view關(guān)鍵字的函數(shù)是不改寫(xiě)鏈上狀態(tài)的行拢,因此用戶直接調(diào)用他們是不需要付gas的(合約中非pure/view函數(shù)調(diào)用它們則會(huì)改寫(xiě)鏈上狀態(tài),需要付gas)诞吱。 pure:不能讀取也不能寫(xiě)入存儲(chǔ)在鏈上的狀態(tài)變量舟奠。view:能讀取但也不能寫(xiě)入狀態(tài)變量。
6房维,[returns ()]:函數(shù)返回的變量類型和名稱沼瘫。
在以太坊中,以下語(yǔ)句被視為修改鏈上狀態(tài):
1咙俩,寫(xiě)入狀態(tài)變量耿戚。
2,釋放事件。
3膜蛔,創(chuàng)建其他合同晓锻。
4,使用selfdestruct.
5飞几,通過(guò)調(diào)用發(fā)送以太幣砚哆。
6,調(diào)用任何未標(biāo)記view或pure的函數(shù)屑墨。
7躁锁,使用低級(jí)調(diào)用(low-level calls)。
8卵史,使用包含某些操作碼的內(nèi)聯(lián)匯編战转。
我是溫馭臣,一個(gè)Solidity的開(kāi)發(fā)學(xué)習(xí)者以躯,以上是我的簡(jiǎn)單總結(jié)槐秧,如果有缺陷,希望在評(píng)論區(qū)看到您的補(bǔ)充忧设。