美文网首页
Scala基本语法中异于Java的部分

Scala基本语法中异于Java的部分

作者: 0过把火0 | 来源:发表于2018-03-06 14:56 被阅读2次

转载请注明出处[https://www.jianshu.com/p/505d6d43b504]

Scala是一门面向对象的编程语言,但同时更是一款函数式编程语言。其基本用法与java还是存在一些差异,后面陆续总结一些这方面的差异便于日后查找。

运算符

运算符的用法很传统,但是注意Scala中不存在++或是--这样的表达,需要写成a+=1或是a=a+1这样的形式。

If语句的差异

判断句If..else的普通写法Scala一样兼容,但是与其他语言不同的是,Scala的If语句块可被看作是一个具有返回值的表达式,因此Scala中可以将If的的判断值直接赋给变量。例如:

class Person
class Student extends Person
class Worker extends Person
def getPerson(age:Int){
    val p1 = if(age <= 25){
        new Student()
    }else{
        new Worker()
    }
}

上面代码的含义就是如果age<=25就实例化Student并赋给p1,否则实例化Worker。

for语句

Scala中的for语句基本格式:

for (i <- 1 to 5)  println(i)

括号中的形式在Scala中被称为生成器,生成器可有多种形式,例如:

守卫者模式:
即:for的生成器中加入条件判断:
for (i <- 1 to 5 if i%2 == 0) println(i)

多生成器模式:
Scala中的多重for循环可简化为一个for中进行表达:
for (i <- 1 to 3; j<-1 to 2) println(i*j)
上面的代码可以依次输出1 2 2 4 3 6

多守卫者模式:
多生成器可以带有多个守卫者:
for (i <- 1 to 3 if i%2 == 0; j <- 1 to 2 if i<2) println(i*j)

除了上述特性外,for还提供一个推导模式,即将for的结果作为返回值进行存储,其依赖yield关键字实现该功能:

 val r = for (i <- 1 to 5 if i%2 == 0) yield {println(i); i}

其基本格式为:for(变量<-表达式) yield {语句块}

相关文章

网友评论

      本文标题:Scala基本语法中异于Java的部分

      本文链接:https://www.haomeiwen.com/subject/ulbhfftx.html