zoukankan      html  css  js  c++  java
  • Scala新版本学习(2):

    1.本章要点;

    (1)if表达式有值;

    (2)块也有值,是它最后一个表达式的值

    (3)Scala的for循环就像是"增强版的"Java for循环

    (4)分号不是必须的

    (5)void 类型是Unit

    (6)避免在函数的定义中使用return

    (7)注意别在函数式定义中漏掉了=

    (8)异常的工作方式和java或者c++中基本一样,不同的是你在catch语句中使用"模式匹配"

    (9)Scala没有受检异常。

    2.条件表达式

    (1)Scala中的if/else表达式有值,这个值就是跟在if或者else之后的表达式的值。

    对于java 或者c++中的?:操作符,Scala有同样的表达方式:

    x>0?1:-1  //等同于if(x>0) 1 else -1

    (2)Scala中每个表达式都有一个类型,如if(x>0) 1 else -1的类型是Int。对于混合类型的表达式:如下图所示,其中一个分支是java.lang.String,而另外一个分支是Int,所以公共超类是Any

    (3)如果else部分缺失了,如if(x>0) 1,但是在Scala中每个表达式都有某种值。所以对于这种问题的一种解决方案是引入一个Unit类,写做()。void没有值但是Unit有一个表示"无值"的值。不带else的语句等同于

     if(x>0) 1 else ()。

    3.语句终止

    4.块表达式和赋值

    (1)块语句是一个包含于{}中的语句序列。{}包含一系列的表达式,其结果也是一个表达式。块的最后一个表达式的值就是块的值。val distance = {val dx=x-x0;val dy=y-y0;sqrt(dx*dx+dy*dy)}

    (2){}块的值取其最后一个表达式,如下面的粗体标出。在Scala中,赋值动作本身是没有值的,或者说值是Unit类型的,即值的类型是{}。一个赋值语句结束的块,比如{r=r*n;n-=1}的类型是Unit的。所以下面的这种形式是错的:

    x=y=1    返回值是Unit类型的。  y=1值是(),最后得到的x是一个Unit类型的值。

    4.输入和输出

    (1)println函数在打印完成之后会在内容后面追加一个换行符。

    (2)相对应的print函数就不带有换行的功能。

    print("Answer: ")   

    println(42)

    等价于 println("Answer "+42)

    5.循环

    (1)Scala有和Java相同的while和do循环

     (2)for循环的语法:for(i <- 表达式)  让变量i遍历<-右边的表达式的所有值。for循环的变量之前,并没有val或者var的指定。该变量的类型是集合的元素类型。循环变量的作用域一直持续到循环结束。

    (3)在遍历字符串或者数组的时候,通常需要使用从0到n-1的区间。这个时候可以使用util方法,而并不是to方法。util方法返回讴歌并不包含上限的区间。

    (4)在这里并不需要使用下标。

    6.高级for循环和for推导式

    (1)使用 变量<-表达式的形式提供多个生成器,使用分号将他们隔开。

    (2)每个生成器都可以带一个守卫,以if开头的Boolean表达式:

    (3)可以使用任意多的定义,引入可以在循环变量中使用的变量:

    7.函数

    (1)函数定义:需要给出函数的名称、参数和函数体。但是必须给出所有的参数的类型。Scala编译器可以通过=符号右侧的表达式的类型推断出返回值的类型,只要函数不是递归的,就不需要指定返回值的类型。

    def abs(x:Double) = if(x>=0) x else -x

    (2)如果函数体需要多个表达式来完成,可以使用代码块。块的最后一个表达式的值就是函数的返回值。

  • 相关阅读:
    SSH框架总结
    SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
    iBATIS SQL Maps
    深入理解Mybatis中sqlSessionFactory机制原理
    mybatis源码分析(1)——SqlSessionFactory实例的产生过程
    MyBatis常用对象SqlSessionFactory和SqlSession介绍和运用
    Generator生成器函数
    MyBatis学习4---使用MyBatis_Generator生成Dto、Dao、Mapping
    采用图形用户界面的操作系统/应用程序
    图形界面的特点是人们不需要记忆和键入繁琐的命令
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/10857336.html
Copyright © 2011-2022 走看看