0

これはリストLです:

['25', '2', '15', '4', '81', '43'] 

これは、コマンドを使用したときの出力ですsort(L)

['15', '2', '25', '4', '43', '81'] 

これは私が出力として欲しいものです:

['2', '4', '15', '25', '43', '81'] 

コマンドラインのようにリスト内の番号を並べ替えるコマンドはあり%sort nますか?

4

1 に答える 1

3

これはドキュメントで説明されています。リストエントリ間の比較を行う関数を定義する必要があります。関数は、引数が等しい場合は0を返し、最初の引数が2番目の引数よりも大きい場合は1を返し、2番目の引数が最初の引数よりも大きい場合は-1を返す必要があります。

function! MyCompare(i1, i2)
    return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1
endfunction

次に、新しい関数を2番目の引数として使用してsort()を呼び出すことができます。したがって:

let list = ['25', '2', '15', '4', '81', '43']
echo sort( list, 'MyCompare' )

エコーします

[2, 4, 15, 25, 43, 81]

予想通り。

于 2012-04-18T09:43:54.593 に答える