【Solidity】switch文を使うには?

Solidityでswitch文を使う方法について解説します。

結論:Solidityではswitch文はサポートされていない

結論から言うと、現バージョンのSolidity(v0.8.x)では、switch文はサポートされていません。

従って、代わりにif-elseif文を使うなどして、代替策をとる必要があります。

代替策:if-elseif文を使用する

switch文が使用できないため、if-elseif文で代替します。

仮に、他言語(Javascript)において、以下のようなswitch文を書きたいと仮定します。

function getColor(selected) {
    switch (selected) {
        case 0:
            return "red";
        case 1:
            return "green";
        case 2:
            return "blue";
        default:
            return "white";
    }   
}

その場合、Solidityにおいてif-elseif文で書き直すと、以下のようになります。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
 
contract Sample {

    function getColor(uint selected) public pure returns (string memory) {
        if (selected == 0) {
            return "red";
        } else if (selected == 1) {
            return "green";
        } else if (selected == 2) {
            return "blue";
        } else {
            return "white";
        }
    }

}

Solidityでは他言語でサポートされている文法を使えないことが多々あります。その場合は、別の文法を使うなどして代替策で上手く回避するようにしましょう。

タイトルとURLをコピーしました