純粋関数
CoddyのSolidityジャーニー「基礎」セクションの一部。レッスン 23/53。
純粋関数は、コントラクトの状態を読み取ったり書き込んだりせず、パラメーターとローカル値から計算を行います。これにより、計算を容易に推論できます。関数を pure として指定することは、コンパイラーによって検証される約束であり、データを消去する要求ではありません。
このヘルパーをコントラクト内で定義します。
function perimeter(uint256 w, uint256 h) internal pure returns (uint256) {
return 2 * (w + h);
}提供されている main 関数内で使用します。
console.log(perimeter(8, 3));ヘルパーに必要なのは幅と高さだけです。ヘルパーはそれらの合計の2倍を返すため、純粋関数にできます。メインラッパーはデバッグコンソールを使用するため、viewのままです。ヘルパー自体にはログ出力も状態へのアクセスもありません。
純粋関数は、コントラクトの状態を読み取ったり書き込んだりしません。
チャレンジ
簡単uint256 型の入力の 3 倍を返す、triple という純粋な内部ヘルパーを作成してください。main から triple(value) を出力してください。
テストは次の順序で main に引数を渡します:uint256 value。各テストは新しいコントラクト状態から開始します。
要求された出力には console.log を使用してください。要求された値のみを、追加のラベルなしで 1 行に 1 つずつ出力してください。ただし、タスクでラベルが指定されている場合を除きます。
自分で試してみよう
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
function main(uint256 value) external view {
// ここに解答を書いてください。
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Solidityプレイグラウンド