scala 返回值_Scala 总结

一、变量:

1、可变的用var修饰。常量用val修饰,相当于加上了final。

ps:声明变量的时候,可以省略类型,编译器会自动推导。类型确定之后就不能修改了。

2、scala中的数据类型分为两大类:①AnyVal(值类型)②AnyRef(引用类型)。它们两个都是对象。

3、AnyVal(值类型)包括:Double、Float、Long、Int、Short、Byte、Boolean、Char、Unit。

4、AnyRef(引用数据类型)包括:collection、classes。

f339c695e89a8d0623b346359f0591f4.png

5、Unit、Null、Nothing:

(1)、Unit表示无值,和其他语言中的void一样。

(2)、null,Null类型只有一个实例值null。它可以复制给任意类型的AnyRef,但是不能复制给AnyVal。

(3)、Nothing类型在scala的类层次级的最低端,它是任何其他类型的子类型,当一个函数,我们确定没有正常的返回值,可以用Nothing来指定返回类型。

6、强制类型转换:

(1)、数据从大到小就需要进行强制类型转化。符号为小括号,和java和像。

(2)、Char类型可以保存Int的常量值,但是不能保存Int中的变量值。

(3)、Byte和Short类型在进行计算的时候,会转化成Int类型。

二、运算符:

1、算数运算符:+、-、*、/、%等。

2、关系运算符:==、!=、<、>、<=、>=。

3、逻辑运算:&&、||、!。

4、位运算符:&、|、^、~、<<、>>、>>>。

三、程序流程控制:

1、顺序控制,就是按照程序的流程执行。

2、if...else...

3、for循环,to的话是前后闭合;until是前闭后开。

4、使用yield关键字会返回一个Vector。

5、while循环和do{}while()。

四、函数式编程:

1、函数的定义:

(1)、使用关键字def

(2)、[参数名:参数类型]:表示函数的输入,可以没有,参数类型可以是值类型和引用类型。

(3)、函数的有返回值,也可以没有函数的返回值。返回类型可以是值类型和引用类型。

1、返回值类型1: :返回值 =

2、返回值类型2: = 表示返回值不确定,使用类型推导完成。

3、返回值类型3: 表示没有返回值,return不生效。

(4)、如果没有return语言,那么最后一行结果作为返回值。

2、函数的递归:

(1)、程序执行一个函数时,就创建一个新的受保护的独立空间(新函数的栈)

(2)、函数的局部变量是独立的,不会受影响。

(3)、递归必须向退出递归的条件逼近,否则就是无限递归

(4)、当一个函数执行完毕或遇到return,就会返回,遵守谁调用,就将结果返回给谁。

(5)、递归必须指明函数的返回值类型,它无法推断函数的返回值类型。

3、函数的可变形参:

(1)、只能放在形参列表的最后。

(2)、格式:y:int *

4、函数的过程:

(1)、声明函数时没有返回值,但是有=号,可以进行类型推断,这个函数实际是有返回值的,该函数并不是过程。

(2)、后面返回值类型时Unit是一个过程,或则没有=号也是一个过程。

5、惰性函数:

(1)、返回值用lazy修饰,只有当真正使用的时候,才会调出来。

(2)、lazy不能修饰var的变量。

五、异常:

1、在scala中只能有一个catch,在catch中可以有多个case来匹配不同的异常。

2、结构:try{}catch{case xxx=>xxx}finaly{}

3、自定义异常:返回值是Nothing,函数体里面是throw new Execption():

8477c85164b690b515a51dd95ce0e486.png

六、面向对象一:

1、定义一个类的注意事项:

(1)、如何创建一个类:

d4057e6366ff1addeb2c0c01a07b55bf.png

在类中name是用var修饰的,相当于Java中的protected,那为什么在主函数中还能直接访问name呢?原因是因为在创建people这个对象的时候,还创建了两个方法:相当于java中的get和set方法。

(2)、类和对象的区别:①类是抽象的,对象是具体的。②类是对象的模板,对象是类的一个个体,对应一个实例。

(3)、创建一个class的时候,不能用public来修饰。

(4)、类中的属性可以是数值类型,也可以是一个引用类型。包括其他class的实例。

2、属性的注意事项:

(1)、属性的定义语法同变量。

(2)、属性的定义类型可以是任意类型,包含数值类型和引用类型。

(3)、scala中声明一个属性,必须显式的初始化。

(4)、如果赋值为null,则一定要加类型,因为不加类型,那么该属性的类型就是null类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值