day12. Solidity基本文法 – 制御構造 –

Solidityでは、他のプログラミング言語同様に、if文、for文などの制御構造(フローを制御するための構文や文法のこと)を使うことがあります。条件に基づいて特定の処理を実行する、といった使い方ができます。

Solidityでは、他のプログラミング言語同様に、if文、for文などの制御構造(フローを制御するための構文や文法のこと)を使うことがあります。条件に基づいて特定の処理を実行する、といった使い方ができます。
C言語のようにif, else, while, do, for, break, continue, returnなどを使うことができます。

TOC

条件分岐

if文やelse if文、else文を使用して、条件に基づいて異なるブロックのコードを実行します。

次の例では、isOddNumber(奇数であるかをチェックする)関数の中で、入力値が奇数か偶数かを判定しています。number % 2numberを2で割ったときのあまり、という意味の数式です。
ifに続く条件は、余りが0である、という意味で、余りが0の場合に次の文が実行されます。elseに続く文は、この条件に当てはまらない場合に実行されます。

Solidity
function isOddNumber(uint256 number) public view returns (bool) {
  bool isOdd = false;
  if (number % 2 == 0) {
    isOdd = false;
  } else {
    isOdd = true;
  }
  return isOdd;
}

ループ

forループやwhileループを使用して、特定の条件を満たす間、あるいは特定の回数繰り返し処理を行います。

次の例のsumUp関数は、0〜9までの合計値を求めるプログラムです。iが0から10未満までの間、iを順番に増やしていき、sumに足し合わせていく、ということをしています。

  1. uint256 i = 0: iに0を代入し、まずは0から始める
  2. i < 10: iが10未満の間
  3. i++: for文以下を実行後、iに1を加えて、繰り返す(2の条件を満たさなくなるまで)
Solidity
function sumUp() public pure returns (uint256) {
  uint256 sum = 0;
  for (uint256 i = 0; i < 10; i++) {
    sum += i;
  }
  return sum;
}

次の例は、day11の例からの引用です。この中で、withdraw関数の中でfor文が使われています。
iが0からs_funders.length(s_funders配列の要素数)未満の間、forの中の3行(5行目〜7行目)を順番に実行します。

Solidity
...
  function withdraw() public onlyOwner {
    uint256 total = 0;
    for (uint256 i = 0; i < s_funders.length; i++) {
      address funder = s_funders[i];
      total += s_addressToAmount[funder];
      s_addressToAmount[funder] = 0;
    }
  ...

制御フローの転送

break文やcontinue文を使用して、ループ内での処理の中断や次の繰り返しステップへのジャンプを制御します。

次の例では、for文の中で、特定の条件の場合に、break, continueが呼ばれています。iが3の場合は、ループを抜けて、処理が中断され、iが5の場合は、次の繰り返し(i= 6)にスキップされます。

Solidity
for (uint i = 0; i < n; i++) {
    if (i == 3) {
        break; // ループを中断する
    }
    if (i == 5) {
        continue; // 次の繰り返しステップへジャンプする
    }
    // iが5でない場合に、この行以降にあるコードは実行される(3の場合は、そもそもループを抜けてしまう)
}

ご意見をお聞かせください!

web3チュートリアルシリーズについてのご意見を是非お聞かせください。

この記事、または、web3チュートリアル全体について、是非、あなたのご意見をお聞かせください。
アンケートはこちらからご回答いただけます。

無料相談承ります

ITの専門家が無料相談を受け付けます。web3以外のテーマでもOKです。

オンラインでの無料相談を承っています。ご希望の方は、お問い合わせフォームよりご連絡ください。
ITの専門家があなたのご質問にお答えいたします。

Let's share this post !

Author of this article

After joining IBM in 2004, the author gained extensive experience in developing and maintaining distributed systems, primarily web-based, as an engineer and PM. Later, he founded his own company, designing and developing mobile applications and backend services. He is currently leading a Tech team at a venture company specializing in robo-advisory.

Comments

To comment

CAPTCHA


TOC