1

このブロックを日付列で並べ替えたい:

["domain1.com" 18-Jan-2011 #"^/" 
"domain2.com" 20-Aug-2011 #"^/" 
"domain3.com" 23-Dec-2011 #"^/" 
"domain4.com" 22-Sep-2011 #"^/"]

ここで説明されているsort/skip関数を使用して実際にこれを行う方法がわかりません。私には明確ではありません:http: //www.rebol.com/docs/words/wsort.html

4

2 に答える 2

4

3つのフィールドのグループがあり、フィールド2で並べ替えますか?

これはそれを行う必要があります:

data: [
    "domain1.com" 18-Jan-2011 #"^/" 
    "domain2.com" 20-Aug-2011 #"^/" 
    "domain3.com" 23-Dec-2011 #"^/" 
    "domain4.com" 22-Sep-2011 #"^/"
   ]

 sort/skip/compare data 3 2
于 2010-05-18T22:35:52.460 に答える
3

/allコンパレータ機能で使用される改良が必要です。これにより、そのシリーズの最初の要素を渡すのではなく、サブシリーズ(スキップ長と同じ長さ)を「レコード」としてコンパレータに渡すことができます。

>> sort/skip/compare/all ["domain1.com" 18-Jan-2011 #"^/" 
    "domain2.com" 20-Aug-2011 #"^/" 
    "domain3.com" 23-Dec-2011 #"^/" 
    "domain4.com" 22-Sep-2011 #"^/"] 3 func [a b] [
        (second a) < (second b)
    ]

== ["domain1.com" 18-Jan-2011 #"^/" 
    "domain2.com" 20-Aug-2011 #"^/" 
    "domain4.com" 22-Sep-2011 #"^/" 
    "domain3.com" 23-Dec-2011 #"^/]

Rebol 2で動作しますが、現在実行しているRebol 3のバージョンでは、動作していません。それはバグです。

于 2010-05-18T21:33:28.650 に答える