美文网首页scala我爱编程
第二章:控制结构和函数

第二章:控制结构和函数

作者: Frank_8942 | 来源:发表于2018-04-15 21:21 被阅读17次

条件表达式

语法结构:   if (判断条件) {逻辑语句} else {逻辑语句}

在scala中, if/else 表达式有值, 本质上就是块表达式是有值的; 

val a: Any =if (0 ==0)"a" else 1

=>所有数据类型的超类为 Any 类型

val b: Int =if (0 ==0)1 else 2

val c: Unit =if (0 ==0)1

=>为了解决没有else的if语句, 在scala中引入 Unit 类型,写作 () ;不带else的 if 语句等同于: if (0=0) 1 else ()

=>() 表示 无用值 的占位符, 就是 "无值" 的值;

块表达式和赋值

在scala 中, { } 块包含一系列表达式, 其结果也是一个表达式; 块中最后一个表达式的值就是块的值;

val d = { val e =3 }

=>在scala中, val e=3 这个赋值动作本身是没有值的, 或者说它们的值是Unit类型, 所以 d 的值为()

循环

scala拥有与java相同的 while和do 循环,但是for 循环做了改变;

for( i <- 集合变量或表达式 ) { }

=>scala 并没有提供break 或 continue 语句来退出循环,可以使用 boolean类型的控制变量, 以及拥有跳出循环的 return 来完成 break和continue 的功能;

=>for循环可以提供多个循环变量: for ( i <- 1 to 3; j <- 1 to 5 ){ };

=>for循环可以提供守卫: for ( i <- 1 to 3 if i != 2 ) { }

=>yield 关键字: 在循环体中加上yield关键字,循坏会创建一个集合,此集合的类型会根据要遍历的集合的类型保持一致,每次迭代生成一个值放入集合;

函数

个人认为,scala中函数和方法的区别就在于 是否是基于对象的;函数可以独立与对象单独存在,并且函数还可分为匿名函数和普通函数,都可以作为变量进行传值; 而方法就必须依附与对象才能进行使用;

def声明函数的数据类型: 

def  fun_def ( i:String ):String = { "this is def "}

fun_def :  (i:String)String

 匿名函数的数据类型:

val  no_name = (i:String) => { "this is no name" }

no_name : String => String = <function1>

=>理论上编译器可以通过=右侧的表达式的类型推断出返回值类型,可以不写,但一定要写上=符号; 如果不写=符号,系统会认为是过程函数, 默认加上的是 :Unit= 空值标记,类似void;

=>scala中有默认参数, def  a ( i:String, j:String="test"):String={ i+j }

=> lazy val name = xxx   懒值并不是非没有额外开销,我们每次访问懒值时,都会一个方法被调用,而这个方法将会以线程安全的方式检查该值是否被初始化;

相关文章

  • 第二章:控制结构和函数

    条件表达式 语法结构: if (判断条件) {逻辑语句} else {逻辑语句} 在scala中, if/els...

  • Kotlin | 2.Kotlin基础

    声明函数、变量、类、枚举以及类型Kotlin中的控制结构智能转换抛出和处理异常 函数学习 函数和变量 函数 变量 ...

  • scala-控制结构和函数

    控制结构和函数 if 表达式 Scala中 if 表达式有返回值。如果if 和 else 的返回值类型不一样,那么...

  • 【2019-05-20】内建控制结构

    scala内建的控制结构:if、while、for、try、match和函数调用,scala从语法层面支持函数字面...

  • 作业

    五、结构体和联合体 结构体是一种特殊形态的类,可以有自己的数据成员和函数成员,可以有自己构造函数折构函数,可以控制...

  • 快学Scala读书笔记002

    第2章 控制结构和函数 if/else Scala的if/else语法结构和Java或C++一样,不过在Scala...

  • Scala的控制结构

    Scala提供了诸如if、while、for、try、match和函数调用等内建控制结构。 if while fo...

  • scala03.控制结构和函数

    3.1if else表达式 在Scala中,几乎所有语法结构都有值。 If语句的返回类型取决于最后一条语句。 Sc...

  • 《快学Scala》——控制结构和函数

    条件表达式 在Scala中if/else表达式有值,这个值就是跟在if或else之后的表达式的值。例如: 上述表达...

  • 二 :scala (2)控制结构和函数

    1 : if else ,在scala中if else是有值的,如果 if 后面的和else后面的类型不一样,...

网友评论

    本文标题:第二章:控制结构和函数

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