scala笔记(二)

原创 2016年05月30日 21:13:18

1.告诉编译器你希望这个参数被当做参数序列处理,追加”:_*”即可,如:val s=sum(1 to 5:_*).
2.如果函数体包含在花括号当中但没有前面的=号,那么返回类型为Unit,这样的函数称为过程。过程不返回值,我们调用它仅仅是为了副作用。建议大家总是显示声明Unit 返回类型。
3.当val被声明lazy时,它的初始化将被推迟,直到我们首次对它取值。
4.try/catch:处理异常;try/finally:在异常没有被处理时执行某种动作,通常是清理工作。二者目的互补。可以组成try/catch/finally语句。throw表达式有特殊的类型Nothing,捕获异常的语法通常采用模式匹配的语法,如果你不需要使用捕获异常的对象,可以使用_来代替变量名。scala没有受检异常——你不需要声明说明函数或者方法可能会抛出某种异常。java有受检异常,必须做出声明,导致可能出现很长的方法签名。
5.异常工作机制:当前的程序的运算被停止,系统将运行控制权交给在离抛出点最近的异常处理器处理并恢复,如果没有找到符合要求的异常处理器,则程序退出。
6.Scala中的yield的主要作用是记住每次迭代中的有关值,并逐一存入到一个数组中.
7.在Scala里面的class和object在Java层面里面合二为一,class里面的成员成了实例成员,object成员成了static成员。
8.Scala里相当于Java接口的是Trait(特征)。Trait的英文意思是特质和性状(本文称其为特征),实际上他比接口还功能强大。与接口不同的是,它还可以定义属性和方法的实现。Scala中特征被用于服务于单一目的功能模块的模块化中。通过混合这种特征(模块)群来实现各种应用程序的功能要求,Scala也是按照这个构想来设计的。一般情况下Scala的类只能够继承单一父类,但是如果是特征的话就可以继承多个,从结果来看就是实现了多重继承。
9.scala里的类型,除了在定义class,trait,object时会产生类型,还可以通过type关键字来声明类型。
type相当于声明一个类型别名:
scala> type S = String
上面把String类型用S代替,通常type用于声明某种复杂类型,或用于定义一个抽象类型。
10.val值不可变,指的是val变量指向的对象不可变,不能指向第二个其他的对象,值不可变对于引用类型来说意味着指向的内存中的实际对象不变,他只约束了变量只能对应某个对象,但不约束所对应对象内部状态是否可以发生变化;var值可变,指的是var变量指向的对象任意可变。
11.变量定义:
val:类似java中final类型的变量
1,基本格式:val 变量名:变量类型 = 值
2,其中有时变量类型可以省略,可以自动识别
3,变量不能赋值,修改
var :等同于java中的非final型变量
12.函数定义
函数格式: def 函数名(参数列表,…):返回结果类型={}
有时函数必须制定返回结果类型,如函数时递归,就必须明确制定返回结果类型
有时如果函数仅 一个语句,连花括号都可以不写
接下来,是一个既不传参,也不返回有用结果的函数的定义,据说解析器返回
greeting():Unit,其中Unit值得时greetin的返回类型,类似于Java的void类型,而且Java中的void类型会被映射成Unit
例如:
//写法一,始终待返回值
def add(x:Int,y:Int):Int={
x+y}
def returnUnit():Unit={
println(“another way to return void”) }
//写法二,省略非Unit返回值;如果没有写返回值,则根据等号后面的东西进行类型推演
def test(x:Int)={
x }
//写法三,省略等号,返回Unit
def returnVoid(){
println(“return void”) }
//写法四:省略花括号,如果函数仅包含一条语句,那么连花括号都可以选择不写
def max2(x: Int, y: Int) = if (x > y) x else y
def greet() = println(“Hello, world!”)
def f():unit

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Scala学习笔记(二)—chapter2

1、scala中的Unit相当于java或C里的void。2、块,在scala中,{ }块包含一系列表达式。块中最后一个表达式的值就是块的值。3、循环语句 (1)for循环和while\do whi...
  • zzh118
  • zzh118
  • 2016年08月03日 17:08
  • 79

Scala学习笔记二

第四章 类和对象4.1 类,字段和方法假设有这样的类:class ChecksumAccumulator { private var sum = 0 def add(b: Byte): Unit ...
  • jsy625
  • jsy625
  • 2015年07月02日 09:18
  • 148

scala 学习笔记(二)

1.启动Scala 输入 scala> 1+ 2 rest0:Int = 3 这行代码会打印: rest0:Int = 3退出scala :quit 2.这行代码包括: 1)一个自动产生...

Scala学习笔记(二) - 环境配置

这里的环境配置是基于JVM的Scala的配置,基于.net的我没安装过 ╮(╯▽╰)╭这里说的是Windows下怎么安装,ubuntu下直接 sudo apt-get install scala就可以...
  • expt
  • expt
  • 2012年07月25日 14:17
  • 7517

Scala School 笔记(二)--集合

----------------------待续

scala学习笔记(二) 控制语句

Scala的大部分表达式都有返回值,所以可以将表达式负值给其他变量或者作为参数传递   如果一个表达式或者函数没有输出值则由系统默认返回一个Unit作为占位,表示为(),你可以在print中打印出...
  • ymingw
  • ymingw
  • 2015年09月15日 10:41
  • 220

Scala学习笔记(二)

Scala语法总结

Scala学习笔记(二)流程控制

scala中的基本控制结构有顺序、条件和循环三种方式,这个和其他的JVM语言是一致的,但是scala也有一些高级的流程控制结构类模拟匹配;在这里我们主要说if、for 、while等三种控制结构及企业...

快学Scala笔记(二)

Scala是一门多范式的编程语言,一种类似java的编程语言,Scala编程语言抓住了很多开发者的眼球。如果你粗略浏览Scala的网站,你会觉得Scala是一种纯粹的面向对象编程语言,而又无缝地结合了...

SCALA学习笔记(二)

SCALA学习笔记(二) SCALA学习笔记二 泛型在继承中的类型变化 Invariant Covariance Contravariance Covariance Contravarian...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:scala笔记(二)
举报原因:
原因补充:

(最多只允许输入30个字)