【逆引き】Solidityで任意の型に独自メソッドを追加する方法

Calendar Clock iconCalendar Clock icon

イーサリアム

# 目次

stringやuint256など任意の型に独自のメソッドを追加する方法を紹介します.

SolidityのLibraryとusing/forという構文を利用します.

# 目的

stringやuint256に独自のメソッドを追加したい.

# 実装方法

Libraryとusing/for構文を併用することで任煮の型にオリジナルのメソッドを定義できます.

型typeにメソッドmethod()を追加する場合は、以下の構文です.

using/forを書いたコントラクト内でのみ有効になります.

// LibraryAは好きな名前
library LibraryA {
    function method(type t) {
        // 何か実行する
    }
}

contract ContractA {
    using LibraryA for type;

    type a;

    function A() {
        a.method();
    }
}

# サンプルコード

以下のコードはRemixでそのまま試すことができます.

# stringに文字列の長さを取得するメソッドを追加する

stringに文字列の長さを取得するlength()というメソッドを追加します.

library StringExtensions {
    function length(string s) returns(uint256) {
        return bytes(s).length;
    }
}

contract MyContract {
    using StringExtensions for string;

    function getLength(string s) public returns(uint256) {
        return s.length();
    }
}

# uint256に足し算をするメソッドを追加する

uint256に足し算をするメソッドadd(x)を追加します.

メソッドは引数を受け取ることができます.

library Uint256Extensions {
    // 2番目からが引数になる
    function add(uint256 y, uint256 x) returns(uint256) {
        return y + x;
    }
}

contract MyContract {
    using Uint256Extensions for uint256;

    function sum(uint256 a, uint256 b) public returns(uint256) {
        return a.add(b);
    }
}

以上、任意の型に独自のメソッドを追加する方法を紹介しました.


リモートフリーランス。ウェブサービス、スマホアプリエンジニア。
東アジアを拠点に世界を移動しながら活動してます!

お仕事のご依頼・お問い合わせはこちら

コメント