問題一覧に戻る
中級関数
問題62: 関数のオーバーロード
Solidityの関数オーバーロードを学習します - 同じ名前で異なるパラメータを持つ複数の関数を定義します。各オーバーロード関数はパラメータ型に基づいて一意のシグネチャとセレクタを持ちます。コンパイラは提供された引数に基づいて正しい関数を選択します。オーバーロードは関連する操作に直感的な関数名を許可することでAPI設計を改善します。ライブラリと複雑なコントラクトで一般的です。オーバーロードの理解はユーザーフレンドリーなインターフェースの作成とセレクタの衝突を避けるのに不可欠です。戻り値の型だけではオーバーロード関数を区別できません。
pragma solidity ^0.8.0;
contract Overloading {
// パラメータなしバージョン
function getValue() public pure returns () {
return 42;
}
// uint256パラメータバージョン
function getValue( x) public pure returns (uint256) {
return x * 2;
}
// 文字列パラメータバージョン
function getValue(string memory s) public pure returns () {
return s;
}
}