パブリック状態ゲッター
CoddyのSolidityジャーニー「基礎」セクションの一部。レッスン 28/53。
状態変数に public を追加すると、コンパイラーはコントラクトの外部から呼び出せる getter を生成します。setter は生成されません。コントラクト内では、変数を名前で直接読み取ります。public の可視性が制御するのはインターフェースであり、ブロックチェーンのストレージが秘密かどうかではありません。
これをコントラクトのスコープで宣言します。
uint256 public score;提供されている main 関数内で使用します。
score = 32;
console.log(score);uint256 public score の宣言は、外部の呼び出し元向けに score という名前のゲッターを作成します。main 内では、単独の名前で状態変数を読み取ります。ただし、その値を書き込むにはコントラクトコードが必要です。public にしても、呼び出し元がストレージに直接代入できるようになるわけではありません。
public 状態変数には外部ゲッターが作成されますが、自動的なセッターは作成されません。
チャレンジ
簡単uint256 public total を宣言します。main 内で total を渡された amount に設定し、出力します。
テストは次の順序で main に引数を渡します:uint256 amount。各テストは新しいコントラクト状態から開始されます。
要求された出力には console.log を使用します。要求された値のみを、1 行に 1 つずつ出力し、タスクで指定されていない限り余分なラベルは付けません。
自分で試してみよう
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "forge-std/console.sol";
contract Main {
function main(uint256 amount) external {
// ここに解答を書いてください。
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Solidityプレイグラウンド