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笔记(二)

1.告诉编译器你希望这个参数被当做参数序列处理,追加”:_*”即可,如:val s=sum(1 to 5:_*). 2.如果函数体包含在花括号当中但没有前面的=号,那么返回类型为Unit,这样的函数...

[Scala]Scala学习笔记二 数组

1. 定长数组如果你需要一个长度不变的数组,可以使用Scala中的Array.val nums = new Array[Int](10) // 10个整数的数组 所有元素初始化为0 val strs ...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

Scala School 笔记(二)--集合

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

scala 学习笔记(二)

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

Scala学习笔记(二)

Scala语法总结

scala学习笔记(二)

if-else写一个函数使得所有的表达式都满足: and(x,y) == x && y or(x,y) == x || y 但是不能使用&&和||。def and(x:Bool...

Scala学习笔记二

第四章 类和对象4.1 类,字段和方法假设有这样的类:class ChecksumAccumulator { private var sum = 0 def add(b: Byte): Unit ...

SCALA学习笔记(二)

SCALA学习笔记(二) SCALA学习笔记二 泛型在继承中的类型变化 Invariant Covariance Contravariance Covariance Contravarian...

Scala学习笔记(二)----IDE

引言 在之前的文章中,我们介绍了如何使用Scala IDE也就是eclipse中集成的Scala开发插件来进行Scala语言程序的开发,在使用了一段时间之后,发现eclipse对Scala的支持...

快学Scala笔记(二)

Scala是一门多范式的编程语言,一种类似java的编程语言,Scala编程语言抓住了很多开发者的眼球。如果你粗略浏览Scala的网站,你会觉得Scala是一种纯粹的面向对象编程语言,而又无缝地结合了...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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