LoginSignup
5
4

More than 5 years have passed since last update.

usingを使ってちょっとシンプルな関数呼び出し

Last updated at Posted at 2013-02-12

Haxeではusingキーワードを使うことでMixinを行うことができます。

たとえば、二つの文字列の距離を比較するプログラムを書いた場合

StringUtil.hx
package utils;
class StringUtil {
    static public function distance(str1:String, str2:String) {
        var map:Array<Array<Int>> = [];
        var l1 = str1.length + 1, l2 = str2.length + 1;

        for ( i in 0...l1 ) map[i] = [i];
        for ( j in 0...l2 ) map[0][j] = j;

        for ( i in 1...l1 )
            for ( j in 1...l2 )
                if ( str1.charAt(i - 1) ==  str2.charAt(j - 1) ) {
                    map[i][j] = map[i - 1][j - 1];
                }else{
                    var min = map[i - 1][j - 1] + 1;
                    var d = map[i][j - 1] + 1;
                    if ( d < min ) min = d;
                    d = map[i - 1][j] + 1;
                    if ( d < min ) min = d;
                    map[i][j] = min;
                }

        return map[l1 - 1][l2 - 1];
    }
}

こうやって使うことができます。

Main.hx
using utils.StringUtil; //←importではなくusing

class Main {
    static function main() {
        //「そろばん」と「そうこばん」は2文字違い。
        trace( StringUtil.distance( "そろばん", "そうこばん" ) );      //2

        //こういう書き方も出来る。
        trace( "そろばん".distance( "そうこばん" ) );                  //2
    }
}

下の書き方がMixinです。
ちょっとシンプルに書けますね。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4