sort等のアルゴリズムには、delegateを利用することが可能です。
元々はsortアルゴリズムのテンプレート引数がaliasパラメタで、リテラルをパラメータにとることが可能であることに由来します。
グローバル名やローカル名なども利用可能なので、関数名を渡すことも、もちろん可能です。

参考: http://www.kmonos.net/alang/d/2.0/template.html#TemplateAliasParameter 参考: http://www.kmonos.net/alang/d/2.0/phobos/std_algorithm.html#sort

これを応用することで、たとえば、3次元のワールド座標上の物体をカメラの座標からの距離で並べ替える「Zソート」などに利用可能かもしれません。

main.d
Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
 
 
 
 
-
|
|
-
|
!
-
|
!
|
!
import std.stdio;
import std.algorithm: sort;
 
void main()
{
    int[] ary = [0,3,1,2];
    real x = 1.2;
    // xの値(1.2)に近い順に並び変える
    // 1(0.2), 2(0.8), 0(1.2), 3(1.8)の順
    sort!((int a, int b)
    {
        return (a-x)*(a-x)<(b-x)*(b-x);
    })(ary);
    writeln(ary);
}
1
2
$ dmd -run main
1 2 0 3

投票とコメント anchor.png Edit

Choices Vote
大変参考になった0  
参考になった0  
あまり参考にならなかった0  
まったく参考にならなかった0  

No comment. コメント​/SampleCodes​/Phobos​/range​/1Edit

Name:

Front page   Edit Freeze Diff Backup Upload Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 957, today: 1, yesterday: 0
Princeps date: 2009-07-22 (Wed) 00:28:38
Last-modified: 2009-07-22 (Wed) 00:28:38 (JST) (4203d) by SHOO
メインメニュー

ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録

Menu