@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("排序前的结果");
arrays.foreach((array: Int ) => println(array))
=>
println("排序前的结果")
arrays.foreach(println)
@山风小子
补充一个call的优点:与dump这个变量是松耦合的
def dump = { ... ->
...
call(...)
...
}
def closure = dump
dump = anotherClosure // 即使dump被赋为另外一个闭包也不会影响原来的闭包
@山风小子
各有什么利弊?可以分析一下吗?谢谢^_^
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: 关于for里面使用变量对性能的影响 Johnny Jian 2009-03-27 12:31