昨天十分无聊。。看了看一个最近比较流行的新语言scala。。真是太强了。。
scala=Java+函数语言。。
我花了些时间学习了一下。。
scala有一些十分强悍的语言特性。。
1.
函数可以做参数。。这个java是不可以的。。C++和C是可以的。但没有scala这么漂亮。。
比如一个函数 是从Int到Int的(比如乘方啊。。*2啊之类的)。。
就是 (Int) => Int。。
如果是二元的。。就是
(Int,Int) => Int。。
用=>符号十分的形象。。
2.
a.method(b) <=> a method b
就是说一切这样的函数都是操作符。。比如对象a有个方法叫insert。。
那么 a.insert(x) <=> a insert x
3.
跟Java接轨。。可以使用一切java的库。。并且编出来的东西可以在JVM上运行。。
比Java更强大并且代码远远简单于Java。。效率差不多(一样的恶心。。)
4.
在面向对象方面也比java纯粹。。java中基本类型不是对象。。
scala中基本类型也是对象。是Any的子类。。
发一个scala的快速排序的代码:
5.
继承了Java的优良传统。。速度慢的跟鬼一样
函数式:
def sort(xs: Array[Int]): Array[Int] = {
if (xs.length <= 1) xs
else {
val pivot = xs(xs.length / 2)
Array.concat(
sort(xs filter (pivot >)),
xs filter (pivot ==),
sort(xs filter (pivot <)))
}
}
过程式。。感觉跟pascal有点像
def sort(xs: Array[Int]) {
def swap(i: Int, j: Int) {
val t = xs(i); xs(i) = xs(j); xs(j) = t
}
def sort1(l: Int, r: Int) {
val pivot = xs((l + r) / 2)
var i = l; var j = r
while (i <= j) {
while (xs(i) < pivot) i += 1
while (xs(j) > pivot) j -= 1
if (i <= j) {
swap(i, j)
i += 1
j -= 1
}
}
if (l < j) sort1(l, j)
if (j < r) sort1(i, r)
}
sort1(0, xs.length 1)
}
还有HelloWorld的程序。。
object HelloWorld {
def main(args: Array[String]) {
println("Hello, world!")
}
}还有一些就看scala的官网
http://www.scala-lang.org/ 上面有很多学习资料
还有wiki上的页面。。




