| 
 | 
 
 本帖最后由 XYX365 于 2013-7-26 11:13 编辑  
 
sort函数作用 
将输入列表按给定的比较函数排序,输出排序后的结果。 
注意:本函数会修改原列表。 
函数定义 
sort( 
    l_data   
    u_comparefn 
)=> l_result 
 
参数 
第一个参数(l_data)是输入列表,第二个参数(u_comparefn)是 比较函数。 
输出是列表 
 
參考: sklangref.pdf->p472 
 
示例: 
1.比較函數是nil的情况下,只是按字符顺序排列,也就是使用比較函數為alphalessp, 
   在列表裡中是純數字就會產生Error 
 
 
 
2.列表中是纯数字元素,可以用lessp来从小到大排列,或者用greaterp从大到小排列 
 
 
3.如果只想按位比较ASC码的大小,alphalessp 
x='("c1" "a2" "b3" "d4" "a1" "2d" "1a") 
sort(x 'alphalessp)  =>  ("1a" "2d" "a1" "a2" "b3" "c1" "d4") 
这个alphalessp和nil木有区别。 
 
4.列表里的元素是数字+字符的话, axlStrcmpAlpNum 
sort( '("u3" "u1" "u9" "u11" "u36")  'axlStrcmpAlpNum)  =>  ("u1" "u3" "u9" "u11" "u36") 
sort( '("u3" "u1" "d9" "u11" "u36")  'axlStrcmpAlpNum)  =>  ("d9" "u1" "u3" "u11" "u36") 
由后一个例子可见,字符位按ASC码,之后再按字母后面的数字大小来排列 
 
5.自定义比较函数 
procedure( strlenlessp(a b) 
    strlen(a)>strlen(b) 
) 
lStr='( "a" "ab" "abcd" "abc" "abcde") 
sort( lStr 'strlenlessp)=>'("abcde" "abcd“"abc" "ab" "a" ) 
编写比较函数很简单,默认a,b为前后输入的2个数据,只要给出这2个数据比较遵循什么规律,那么这个排序方式就定下来了。 
 
本函数修改了输入列表 
y = '(c a d b) 
(sort y nil) => (a b c d) 
y => (c d) ;no longer points to head of list 
y = '(c a d b) 
y = (sort y nil) => (a b c d) 
y => (a b c d) ;reassignment points y to sorted list. |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |