初学scala

Scala
1.简介
Scala是一门现代的多范式语言,志在以简介、优雅及类型安全的方式来表达常用的编程类型。它平滑地集成了面向对象和函数式语言的特性。
Scala式面向对象的。鉴于一切值都是对象,可以说scala是一门纯面向对象的语言。对象的类型和行为是由类和特质来描述的。类可以由子类化和一种灵活的、基础mixin的组合机制来扩展
Scala是函数式的。鉴于一切函数都是值,又可以说scala是一门函数式语言。Scala为定义匿名函数提供了轻量级的语法,支持高阶函数,允许函数嵌套及柯里化。Scala的样例类和内置支持的模式匹配代数模型在许多函数式编程语言中都被使用。对于那些并非类的成员函数,单例对象提供了便捷的方式区组织它们。
Scala的中any是所有类型的超类型 。Any有两个直接子类AnyVal和AnyRef
当前方法的参数类型可以是方法(接口中唯一的抽象方法);
2.内容
2.1在scala中,类型可以是方法
要定义一个变量,或者准备要使用一个类型,必须定义变量是什么类型;scala是一个弱类语言(变量不需要指定类型)
例如 :var a =0l;
Scala方法五要素 : 修饰符:def 返回值:Unit 相当于java的void
方法名:main
参数:变量,类型,名字,值;规则:(名字:类型)
例:def main (args:Arrya[String]): Unit ={
}
常量:val 一旦声明,无法修改 必须在声明的时候就要给值
变量:var 变量:类型(可以省略)
匿名函数:
如果一个函数的返回值是Unit,Unit可以省略
如果代码只有一行,大括号可以省略 但是省略以后,就要把=换成=>
在scala中方法中可以嵌套方法,而java不可以
方法可以写多个参数列表
例:def test1(x: Int ,y:Int)(z:Int) : Unit ={
}
样例类的定义,目的是为了调用 用来判断
样例类一般不用于可变的对象,并且可以做值比较(只有四类八种基本数据类型;) toString默认的就是构造方法,同时把值带上了。
例:case class point
接口:trait
元组:大于map 元组可以放好多个,最多22个 ,分别是(tuple2,tuple3,…tuple22)
在scala中,元组是一个可以容纳不同类型元素的类。元组是不可变的;当我们需要从函数返回多个值时,元组会派上用场。
类型Unit的值()在概念上与类型Tuple0的值()相同。Tuple0只能有一个值,因为它没有元素。
混入: mixin
如果一个类既有父类(class)又有接口;类的继承使用extends,接口使用with
类D有一个父类B,和一个混入C,一个类只能有一个父类,但是可以有多个混入。混入和某个父类可以能有相同的父类。
高阶函数
一个方法的参数或者返回值还是方法
高阶函数是指使用其他函数作为参数、或者返回一个函数作为结果的函数。在scala。我们约定使用函数值作为参数,或者返回值为函数值的”函数”和”方法”,均称之为”高阶函数”。
强制转换方法为函数,有了这句话,那我们在使用的时候,方法和函数,一回事。
使用高阶函数的一个原因是减少冗余的代码。
方法嵌套
柯里化
方法可以定义多个参数列表,当使用较少的参数列表调用多参数列表的方法时,会产生一个新的函数,该函数接收剩余的参数列表作为其参数。这被称为柯里化。
柯里化就是java中的重载。
def foldLeft[B](z: B)(op: (B, A) => B): B
List和案例类很像。List就是一个容器
大小。循环。
Object使用的时候可以不用new对象
提取器:
提取器对象是一个包含有unapply方法的单例对象。Apply方法就像一个构造器,接收参数然后创建一个实例对象,反之unapply方法接收一个实例对象然后返回最初创建它所用的参数。
For( i <- 0 to 10) 0-10
For(i <- 0 unitl 10) 0-10 不包含10
正则表达式
/**
* ------------------边界匹配器------------------
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
*/

/**
 * ------------------Greedy 数量词------------------

X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
*/

函数:def 函数名(参数) :类型={}
类的getset方法,toString方法。
学习了scala的特质 其实就是接口
Scala的类
Scala的 元组 for循环 和lamada表达式差不多 增强for循环
元组-混编
当某个特质被用于组合类时,被称为混入
Trait可以继承自类
类实现接口在java中用implements 在scala中使用with

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值