@thebye85
i++是非原子操作,你只能通過其他手段來保證咯
re: Scala 的快速排序 Johnny Jian 2009-08-14 22:44
@Net4J
贊成
同樣的程序用Groovy寫:
def sort(xs) {
if (xs.size() <= 1)
xs
else {
def pivot = xs[xs.size() / 2 as int]
sort(xs.findAll { it < pivot }) +
xs.findAll { it == pivot } +
sort(xs.findAll { it > pivot })
}
}
def array = [123, 343, 5435, 23, 3213]
println array
array = sort(array)
println array
或者用groupBy方法:
def sort(xs) {
if (!xs)
[]
else {
def pivot = xs[xs.size() / 2 as int]
def m = xs.groupBy { it <=> pivot }
sort(m[-1]) + m[0] + sort(m[1])
}
}
def array = [123, 343, 5435, 23, 3213]
println array
array = sort(array)
println array
re: Scala 的快速排序 Johnny Jian 2009-08-13 10:19
Console.println("排序前的結(jié)果");
arrays.foreach((array: Int ) => println(array))
=>
println("排序前的結(jié)果")
arrays.foreach(println)
@山風(fēng)小子
補充一個call的優(yōu)點:與dump這個變量是松耦合的
def dump = { ... ->
...
call(...)
...
}
def closure = dump
dump = anotherClosure // 即使dump被賦為另外一個閉包也不會影響原來的閉包
@山風(fēng)小子
各有什么利弊?可以分析一下嗎?謝謝^_^
def dump
dump = { File context, int depth, Stack levels ->
...
dump(file, depth, levels)
...
}
不是可以寫成
def dump = { File context, int depth, Stack levels ->
...
call(file, depth, levels)
...
}
嗎?我在博客里也有寫過:
http://johnnyjian.javaeye.com/blog/260028
re: 關(guān)于for里面使用變量對性能的影響 Johnny Jian 2009-03-27 12:31