Solidity語言學習筆記————24、輸入輸出引數

FLy_鵬程萬里發表於2018-07-02

輸入引數和輸出引數(Input Parameters and Output Parameters)

與JavaScript一樣,函式可以將多個引數作為輸入,但與Javascript和C不同的是,Solidity的函式可以返回任意數量的引數作為輸出。

輸入引數(Input Parameters)

輸入引數的宣告方式與變數相同。不過有一個不同之處:輸入引數中未使用的引數可以省略變數名。例如,假設我們希望我們的合同接受一個帶有兩個整數的外部呼叫,可以這樣寫:

pragma solidity ^0.4.16;

contract Simple {
    function taker(uint _a, uint _b) public pure {
        // do something with _a and _b.
    }
}

輸出引數(Output Parameters)

returns關鍵字之後,可以用與輸入引數相同的語法宣告輸出引數。例如,函式返回兩個輸入引數給定整數的和與乘積,可以這樣寫:

pragma solidity ^0.4.16;

contract Simple {
    function arithmetics(uint _a, uint _b)
        public
        pure
        returns (uint o_sum, uint o_product)
    {
        o_sum = _a + _b;
        o_product = _a * _b;
    }
}

輸出引數的變數名可以省略。輸出值也可以使用return語句指定。return語句還能夠返回多個值。返回引數初始化為0;如果未顯式設定,它們會保持為0。

輸入引數和輸出引數可以用作函式體中的表示式,也可在賦值操作的左邊使用。

控制結構(Control Structures)

除了switchgoto,solidity的絕大多數控制結構均來自於JavaScript,ifelsewhileforbreakcontinuereturn,?:, 作用均和C / JavaScript中的一樣。

條件語句中的括號不能省略,但在單條語句前後的花括號可以省略。

注意,Solidity不能像C和JavaScrip那樣 ,從非布林型別型別到布林型別的轉換, 所以if (1){…}在Solidity中並不合法

返回多個值(Returning Multiple Values)

當函式具有多個輸出引數時,比如return (v0, v1, ..., vn)可以返回多個值。元件的數量必須與輸出引數的數目相同。


相關文章