[スマートコントラクト・プログラミング]Solidityの条件分岐

プログラミング

スマートコントラクトプログラミング言語であるSolidityの条件分岐(if構文)について記載します。

Solidityの条件分岐

プログラムを書いていると、与えられた条件の中から一つを採用しなければならない状況が発生することが良くあります。

このような条件分岐をせまられた場合、プログラムが正しい判断を下し正しいアクションを実行できるようにする条件文を使用する必要があります。

Solidityでは異なる条件に基づいて異なるアクションを実行するための条件文をサポートしています。

今回はSolidityの条件分岐処理であるif.else 文について説明します。

ifステートメント

if文は、Solidityが条件付きで判断を下し、文を実行するための基本的な制御文です。

基本的なifステートメントの構文は次のとおりです-

構文

ifの条件の結果の値が真である場合、{}で指定されたステートメントが実行されます。

条件が負の場合、どのステートメントも実行されません。ほとんどの場合、意思決定を行う際に比較演算子を使用します。

Solidityでのif 文がどのように機能するかの参考として下記ソースコードを確認してみてください。

このコードでは、aとbの値の加算を行い、if文で合計値が10と等しいか確認するコントラクトとなっています。

上記ソースコードをコンパイル、Deployし、addValueファンクションを呼び出すと下記結果が返ってきます。

$ decoded output
{
“0”: “string: Value is 10”
}

if…elseステートメント

if…else構文は、Solidityがif構文よりもより制御された方法で処理を実行できるようにする条件分岐処理です。

基本的なif elseステートメントの構文は次のとおりです-

構文

ifの条件の結果の値が真の場合、’if’ブロック内{}の指定されたステートメントが実行されます。

条件が負なら、else ブロックの中の指定されたステートメントが実行されます。

Solidityでのif else構文がどのように機能するかの参考として下記ソースコードを確認してみてください。

このコードでは、aとbの値の比較を行い、if else構文でどちらが大きいか確認するコントラクトとなっています。

上記ソースコードをコンパイル、Deployし、setValueファンクションを呼び出すと下記結果が返ってきます。

$ decoded output
{
“0”: “string: a is not bigger than b”
}

if…else if… ステートメント

if…else if…構文は if…else の発展形で、Solidity が複数の条件から正しい判断を下すためのものです。

if-else-if ステートメントの構文は次のとおりです-

構文

ステートメント(複数可)は、真の条件に基づいて実行され、いずれの条件も真でない場合は、elseブロックが実行されます。

Solidityでのif..elseif..else構文がどのように機能するかの参考として下記ソースコードを確認してみてください。

このコードでは、aとbとcの値の比較を行い、if..elseif..else構文でどの値が一番大きいか確認するコントラクトとなっています。

上記ソースコードをコンパイル、Deployし、checkValueファンクションを呼び出すと下記結果が返ってきます。

$ decoded output
{
“0”: “string: c is bigger than a and c”
}

最後に

今回紹介したSolidityの仕様やコードをRemix IDEHardhatで実際に実行やテストをして確認してみましょう。

実際に動かしたり、テストすることで理解が深まるかと思います。

hardhatのインストール手順

Ethereum(イーサリアム)のDApps開発環境Hardhatのインストール手順
Ethereum(イーサリアム)のローカル開発環境であるHardhatのインストール手順を記載します。 Hardhatとは? Hardhatは、Solidityなどで開発したイーサリアムのスマートコントラクト、Dappsをコ...

HardhatでスマートコントラクトのDeploy手順

[Hardhat]SolidityでHello Worldのスマートコントラクトを作成
Solidityを使ってHello Worldを作成してみましょう SolidityでHello World! 前提条件 ・Hardhat デフォルト・フォルダ構成 Hardhatについては下記記事を参照ください。 ...
タイトルとURLをコピーしました