Scala学习(八)——异常处理
简介 要编写一个好的程序,异常处理非常必要。Scala提供了和其他语言类似的异常处理方式。 throw语句 Scala可以直接抛出Java中的任意Throwable类型的对象:
1 |
throw new Exception("Some Error") |
异常抛出检查 Scala取消了Java中的抛出异常声明和检查,所以不存在throws关键字。同样,Scala中所使用Java库的抛出异常声明也不需要理会。 […]
简介 要编写一个好的程序,异常处理非常必要。Scala提供了和其他语言类似的异常处理方式。 throw语句 Scala可以直接抛出Java中的任意Throwable类型的对象:
1 |
throw new Exception("Some Error") |
异常抛出检查 Scala取消了Java中的抛出异常声明和检查,所以不存在throws关键字。同样,Scala中所使用Java库的抛出异常声明也不需要理会。 […]
最近看了《命运石之门》这部动漫,本来听别人说会很凌乱,看一遍看不懂,但是看过之后发现其逻辑很清晰,设计很精巧,并没有什么难懂的地方。当然,可能是因为我已经习惯了这种穿越,所以看了前几集以后就已经猜到结局了,剩余的部分只是对通向结局过程的补全。在看的过程中,我就在思考时间旅行的合理性,以及本作是如何合理地诠释这一作品中时空异变的原因。 要解决时间旅行的合理性,就要解决祖父悖论。那就是,时空旅行的自己 […]
简介 有一些内容不是很容易归类,篇幅也不够,但是是需要了解的部分,暂且放在这里。 标识符 除了关键字,运算符,数字,字符串和一些特殊符号,剩下的就是标识符,标识符构成了代码的重要部分。 Scala标识符可以由$,_,字母,数字,以及大部分的字符(包括中文字符)构成。 要点: _单独使用时不是标识符 数字不能作为标识符开头 $不建议使用在标识符中 某些字符会被当做运算符处理,比如→,注意和-> […]
简介 apply和unapply指的是持有这两个名字的方法,对于这两个方法,Scala编译器做了一些特殊的设定,赋予了它们特殊的意义,让它们看起来更好看一点。 从数组讲起 在前面的内容里,我们已经定义过数组了,但是还从来没有介绍过如何使用数组,在这里补齐一下:
1 2 3 4 5 |
val arr = new Array[Int](10) // 定义Int类型,长度为10的数组,可以看到这里用了泛型 val arr2 = Array(1, 3, 5, 7) // 直接从内容构造数组,类似Java里的new int[]{1, ...} arr(3) = 10 // 赋值 println(arr2(3)) // 使用 |
刚接触Scala的人一定很疑惑为什么使用()而不是常用的[]作为数组访问 […]
简介 在任何语言里,运算符都是很重要的部分,Scala也不例外。然而,从某种意义上讲,Scala根本就没有除了直接赋值运算符=以外的运算符。这是怎么回事儿呢?接下来就开始讲。 本质 在Scala中,除了=以外,运算符其实都是方法。中缀运算符是一个参数的方法,前缀运算符和后缀运算符是无参方法。在其他语言中我们熟悉的表达式到了Scala中可能实质上只是一系列方法调用。比如: [crayon-67686 […]
简介 在Java或者C++里面,像列表(List)这些数据结构,在编写的时候,都不需要指定其中元素的类型,而是构造的时候指定,这一特性就称为泛型。同样,Scala中也提供了泛型,而且功能比Java的泛型更加强大。 类的泛型 可以给一个类添加泛型,这样,在编写的时候就不需要考虑这一类型的具体情况,而是使用一个标记来注明。泛型的定义列表用[]包含,用,分隔,卸载类名之后,构造函数参数列表之前,泛型的具 […]
简介 作为一个强类型语言,类型是语言中很重要的一部分。和Java相比,Scala的类型更加丰富。 基本类型 Scala没有基本类型,所有对应Java中的基本类型都是类: Java基本类型 Java类 Scala类型 说明 byte Byte Byte -128~127 short Short Short -32,768~32,767 int Int Int -2,147,483,648~2,147 […]
简介 如果说类和方法构成了程序的框架,那么实际完成的代码就是程序的血肉。Scala中也提供了常见的流程控制结构诸如if,for,while,do … while等等,但是其特性和Java相比有所不同。在本文中将会一一介绍。 基本代码块 和Java相同,基本代码块是由{}包围的语句序列。和Java不同的地方在于,Scala的基本代码块是有值的,其值为最后一个语句的值(Scala中的语句都是有值的 […]
简介 上一章中其实也可以看到,Scala和Java类似,在类内直接定义的变量、方法即是成员变量和方法。但Scala中的构造方法和Java稍微有些不同。 成员 首先可以像Java那样直接定义成员:
1 2 3 4 5 |
class AClass { val a = 1 val b = 0.1 var v = 7l } |
也可以设置访问级别,默认是公有,没有public关键字(可以当变量名使用):
1 2 3 4 5 |
class BClass { private val a = 1 protected val b = 0.1 var public = 7l } |
简介 Scala是一种基于JVM的语言,但是兼顾了Java的面向对象特性和函数式编程。因为不像Java那样那么需要兼顾向后兼容性,Scala的活力比Java要高出许多,语言特性也丰富许多。更好的泛型、更方便的回调、更简单的集合操作。 因为函数式编程和以前的面向对象编程以及面向过程编程的思路都很有差异,一步登天是不可能的,所以我决定以Java为基石,从Scala的语法特性学起,以求从语法特性中获得语 […]