sort()の使い方
これもGroovy: A Dynamic OO Language for the JVMのコードを少し変更してみて動かしてみる。
じつはよくわからなかったりする。
class Fruit {name ; weight } list = [new Fruit(name:"orange", weight:100), new Fruit(name:"watermelon", weight:300), new Fruit(name:"apple", weight:100)] // それぞれclone()して試してみる clone = { list.clone() } // これはsortする前 assert clone().name == ["orange", "watermelon", "apple"] // nameで昇順。納得できる。 assert clone().sort{ |fruit| fruit.name }.name == ["apple", "orange", "watermelon"] // この結果って正しい? // 感覚的に["apple", "orange", "watermelon"]になるかと思ってた… assert clone().sort{ [it.name, it.weight] }.name == ["watermelon", "apple", "orange"] // クロージャをパラメータで渡すとこうなるらし。 // <=>の意味がよくわからず。 assert clone().sort{ | a, b | a.name <=> b.name }.name == ["apple", "orange", "watermelon"]