2010-05-18 6 views
1

Я хочу, чтобы отсортировать этот блок на дату колонке:Как отсортировать этот домен доменных имен rebol по дате?

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

Я не могу видеть, как на самом деле сделать это с родом/SKIP функции, описанной здесь, это не кристально ясно для меня: http://www.rebol.com/docs/words/wsort.html

ответ

4

У вас есть группы из трех полей, и вы хотите сортировать поле 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 
+0

Ах, не впитывается, вы можете использовать только смещение там. Все еще даже в последней версии r3 * sort/skip/compare/all ["a" 2 "b" 1] 2 func [ab] [print a print b] * кажется, делает неправильную вещь (печатает a на одной строке и b на одной строке) – HostileFork

+0

Спасибо, что кажется очевидным после этого, помощь должна быть такой же ясной, как и вы :) –

+0

@hostile рад, что это заставило вас обнаружить потенциальную ошибку в R3; поскольку для меня я все еще использую R2. –

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 Я в настоящее время работает, он не работает. Это ошибка.