明示的なリバート
CoddyのSolidityジャーニー「基礎」セクションの一部。レッスン 47/53。
if 分岐では、revert(message)を呼び出して無効なケースを明示的に拒否できます。これは、拒否条件のほうがその反対の条件より読みやすい場合に便利です。通常の処理はガードの後に配置し、許容できる入力に対してのみ実行されるようにします。
この抜粋の文は、提供されたmain関数内で実行されます。
uint256 chosen = 4;
if (chosen > 6) { revert("Choice too large"); }
console.log(chosen + 2);Four は six を超えないため、拒否する分岐はスキップされます。実行は console 呼び出しに到達します。明示的な revert は失敗した require と同じように呼び出しを拒否します。これは通常の結果を表示する方法ではありません。
revert は、通常どおり続行する代わりに、現在の呼び出しを失敗で終了させます。
チャレンジ
簡単50を超える値は、revertと有用なメッセージを使って拒否してください。受け入れられる入力については、50から値を引いた結果を出力してください。すべての出力テストは範囲内です。
テストでは、次の順序で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プレイグラウンド