赞
踩
主要是一些基本的语法点
两者还是很像的,都是基于JVM运行的,因为看很多论文中的实现部分都是通过Scala实现的,所以大致根据官网的文档和自己查的一些资料,总结一下Scala和Java相同和一些不同之处。
声明方式
class 类名
public static void main(String[] args)
object 名
def main(args:Array[String])
Scala中所有都是对象,比如数字也是对象1.*(3)
这样通过方法的形式调用,不像Java中还有八种基本数据类型不是类结构
object Timer { def oncePerSecond(callback: () => Unit) { //unit相当于void while (true) { callback(); Thread sleep 1000 } } def timeFlies() { println("time flies like an arrow...") } def main(args: Array[String]) { oncePerSecond(timeFlies) } }
面向表达式的
函数式的一种编程风格,也就是返回值,但是不改变中间过程
Java的指令式编程的一种改变,通俗来说就是“去变量”
//指令式写法 def printArgs ( args: Array[String]) : Unit ={ var i = 0 while (i < args.length) { println (args(i)) i += 1 } } //函数式写法 def printArgs ( args: Array[String]) : Unit ={ for( arg <- args) println(arg) }
不变量和变量:
val nochange = 1;//只能赋值一次
var changable = 2;
函数定义:
def function_name(arg1: Int): Int = arg1 + 1//返回值最后写,注意一般是等式的写法
function_name(1,2)//调用时
(x: Int) => x + 1//声明匿名函数
val f = (x: Int) => x + 1//函数也能作为一个对象,当成量进行赋值
f(1)//调用方式
def add(m: Int,n: Int) = m + n
val add2 = add(2,_: Int)
add2(3)//输出为5,_表示通配符
柯里化函数:
def add(m: Int,n: Int) = m + n
def add(m: Int)(n: Int) = m + n//上面函数的 柯里化
def add(m: Int)=(n: Int) => m + n//就是转换成返回一个匿名函数的函数
/**
实际调用时
*/
val result = add(1)_//注意通配符,这时 result = (n: int) => 1 + n
val sum = result(2)//输出3
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。