Scala
马鹏森
这个作者很懒,什么都没留下…
展开
-
scala中class与object区别.
calss scala编译器会字段帮我们生产一个私有字段和2个公有方法get和setscala 中没有 static 关键字,所以 对于一个class来说,所有的方法和成员变量在实例被 new 出来之前都是无法访问的因此在class中的main方法没什么用了(因为必须要new出来main方法,那么就没有入口)scala 的object 中所有成员变量和方法默认都是 static 的,所以可以直接访问main方法class Lis { var age=19}object Test{原创 2020-10-02 11:50:28 · 14524 阅读 · 0 评论 -
IDEA自动勾选显示类型(specify type)
1.先进入settings中2.勾选上local definition原创 2020-10-02 09:28:22 · 17411 阅读 · 0 评论 -
postMan使用方法
原创 2020-08-09 08:48:44 · 7628 阅读 · 0 评论 -
10.项目实战
文章目录项目需求项目需求括号中用不到直接删除原创 2020-08-08 08:54:28 · 7614 阅读 · 0 评论 -
IDEA查看Scala的源码
1、下载源代码点击这个链接:http://www.scala-lang.org/download/all.html选择需要的版本点击打开;在新打开的网页下方找到源代码下载项:2、在intellij idea设置指向源代码在intellij中打开File –> Project Structure选择Global Libraries –> 选择Sources在右侧面板中的Scala Library下方点击“+”按钮;选择解压后的源码包的src目录;ok即可。...原创 2020-08-08 08:07:15 · 9033 阅读 · 1 评论 -
Scala隐式转换
我们需要某个类中的一个方法,但是这个类没有提供这样的一个方法,所以我们需要隐式转换,转换成提供了这个方法的类,然后再调用这个方法隐式参数使用关键字implicit进行标识,当进行使用时,可以不给此标识变量进行传值,而从上下文中进行查找。...原创 2020-08-07 20:32:12 · 7760 阅读 · 0 评论 -
Scala偏函数
函数名含义和用法isDefinedAt判断传入来的参数是否在这个偏函数所处理的范围内,返回true或者falseorElse将多个偏函数组合起来使用,效果类似case语句andThen相当于方法的连续调用,比如g(f(x)), pf1的结果返回类型必须和pf2的参数传入类型必须一致,否则会报错。applyOrElse它接收2个参数,第一个是调用的参数,第二个是个回调函数。如果第一个调用的参数匹配,返回匹配的值,否则调用回调函数。object P ext...原创 2020-08-07 17:26:36 · 7863 阅读 · 0 评论 -
curring函数,以及高阶函数
def sum(a:Int,b:Int)=a+b println(sum(2,3)) //curring函数,将原来接收两个参数的一个函数,转换成2个 def sum1(a:Int)(b:Int)=a+b println(sum1(2)(3)) val l=List(1,2,3,4,5,6,7,8) //map:逐个去操作集合中的每个元素 l.map((x:Int)=>x+1) l.map(x=>x+1)//也可以这么写 l.map(_+1)//_表示里面的每原创 2020-08-07 16:41:12 · 8138 阅读 · 0 评论 -
插值,多行字符串,匿名函数
object StringApp extends App{ val s1="hello:" val name="张三" println(s1+name)//插值 println(s"hello:$name")//这里面的s是固定写法,s+$一起使用 val team="AC Milan" println(s"hello:$name,welcome to $team")//多行字符串 val b= //按住shift+双引号,按三次双引号 """原创 2020-08-07 15:25:17 · 7725 阅读 · 1 评论 -
Scala的异常操作
object ExceptionApp extends App{ try { val i=10/0 println(i) }catch { case e:ArithmeticException=>println("除数不能为0") case e:Exception=>println(e.getMessage)//Exception是最大的异常类 }finally { //finally是一定可以执行的,一般为释放资源的操作 }}..原创 2020-08-07 09:22:08 · 7798 阅读 · 0 评论 -
Array,List,数据类型,caseclss模式匹配
文章目录Array数组List集合根据数据类型进行匹配Array数组 def greeting(array: Array[String]): Unit ={ array match { case Array("张三")=>println("Hi,张三") case Array(x,y)=>println("HI:"+x+","+y)//数组里面的任意两个人 case Array("张三",_*)=>println("hi张三和你的其他朋友")//张三开头的原创 2020-08-07 08:24:24 · 7907 阅读 · 0 评论 -
模式匹配基础用法
object MatchApp extends App { val names=Array("张三","李四","王五") val name=names(Random.nextInt(names.length)) name match { case "张三" =>println("我是张三") case "李四" =>println("我是李四") case _ =>println("我不知道这是谁") } def judgeGrade(gra原创 2020-08-07 07:59:36 · 7926 阅读 · 0 评论 -
Option,Some,None
val m=Map(1->2) println(m(1)) println(m.get(1).get)//m.get(1)得到some(2),m.get(1).get得到2 println(m.getOrElse(2,"None"))原创 2020-08-06 17:50:02 · 7849 阅读 · 0 评论 -
Scala里Map()集合
方法描述keys返回 Map 所有的键(key)values返回 Map 所有的值(value)isEmpty在 Map 为空时返回truekeySet返回key集合valueSet返回value集合 // 空哈希表,键为字符串,值为整型 var A : Map[Char,Int] = Map()//添加键值对 A += ('I' -> 1) A += ('C' -> 2) println( "A...原创 2020-08-06 16:59:58 · 8077 阅读 · 0 评论 -
Scala的List集合和Set集合
Nil是一个空的不可变的集合 def main(args: Array[String]): Unit = { val l=List(1,2,3,4,5) println(l.head)//1 println(l.tail)//List(2, 3, 4, 5) //将1当成head,将后面的Nil当成tail,拼接成一个新的list,其实就是List(10),第0个元素为10 val l2=10 :: Nil val l3=20 :: l2//List(20原创 2020-08-06 16:00:47 · 8186 阅读 · 0 评论 -
可变数组ArrayBuffer和不可变数组Array
Nil是一个空的不可变的集合object ArrayApp extends App { val a=new Array[String](5) a.length a(1)="hello" val b=Array("A","B","C","D") val c=Array(1,2,3,4,5,6,7) c.sum c.max c.min //将数组转为字符串,输出1234567 c.mkString //转为字符串,并且控制头尾的内容和每个元素的分隔符输出<原创 2020-08-06 15:34:27 · 8044 阅读 · 0 评论 -
case class和trait
object CaseClassApp { def main(args: Array[String]): Unit = { println(Dog("旺财").name) }}//case class不用new,通常用在模式匹配case class Dog(name:String)原创 2020-08-06 10:48:59 · 7856 阅读 · 0 评论 -
伴生类和伴生对象
关键类名()会调用object里面的apply方法:val b=ApplyTest()对象()会调用class里面的apply方法:val c=new ApplyTest()object ApplyApp { def main(args: Array[String]): Unit = { for(i<- 1 to 10){ ApplyTest.incr } println(ApplyTest.count)//结果为10,说明object本身就是一个单例对象原创 2020-08-06 10:40:26 · 7870 阅读 · 0 评论 -
重写
object ConstructorApp { def main(args: Array[String]): Unit = {//继承父类,当new一个子类的时候,会先调用父类的构造方法 val student=new Student("PK",18,"Math") println(student.name+student.age+student.major)//student.major子类不写var会让这里访问不到 println(student)//此处的student默原创 2020-08-06 09:43:56 · 7799 阅读 · 0 评论 -
抽象类
object AbstrcatApp { def main(args: Array[String]): Unit = { val student=new Student2()//new出抽象类的实现类,从而使用这个抽象类 println(student.name) student.speak }}/** * 抽象类的一个或者多个方法没有完整的实现(只有定义,内有实现) */abstract class Person2{//抽象方法 def speak//抽象原创 2020-08-06 09:40:31 · 7628 阅读 · 0 评论 -
继承
object ConstructorApp { def main(args: Array[String]): Unit = { val student=new Student("PK",18,"Math") println(student.name+student.age+student.major)//student.major子类不写var会让这里访问不到 }}//主构造器(跟在class后面),其中传入的参数必须带valclass Person(val name:Stri原创 2020-08-06 08:55:46 · 7568 阅读 · 0 评论 -
主构造器和附属构造器
object ConstructorApp { def main(args: Array[String]): Unit = { //调用主构造器 val person=new Person("张三",30) println(person.name+person.age+person.school) //调用附属构造器 val person2=new Person("PK",18,"M") println(person2.name+person2.age+p原创 2020-08-05 17:38:40 · 7731 阅读 · 2 评论 -
面向对象:类的定义和使用
object SimpleObjectApp { def main(args: Array[String]): Unit = { val person=new People()//不同于Java person.name="Messi" println(person.name+"..."+person.age) println(person.eat()) person.watchFootball("Bearcelona") person.printInfo.原创 2020-08-05 17:06:05 · 7926 阅读 · 0 评论 -
循环表达式
//to,Range,until println(1 to 10)//此时输出(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)左闭右闭 println(1.to(10))//1 to 10等价于1.to(10) println(Range(1,10))//此时输出(1, 2, 3, 4, 5, 6, 7, 8, 9)左闭右开 println(Range(1,10,2))//此时步长为2,则输出(1, 3, 5, 7, 9) println(1.until(10)) println(原创 2020-08-05 16:21:39 · 8261 阅读 · 0 评论 -
默认参数,命名参数,可变参数
文章目录默认参数命名参数默认参数 def sayName(name:String="PK"): Unit ={//此处默认参数为PK println(name) } sayName()//其中默认参数为PK,所以此时输出PKsayName("dog")//此时传入参数dog,那么就以你当前传入的参数为准,输出dog命名参数def speed(distance:Float,time:Float):Float={ distance/time }println(spe原创 2020-08-05 15:33:48 · 7862 阅读 · 0 评论 -
函数的定义和使用
object FunctionApp { def main(args: Array[String]): Unit = { println(add(2,3)) println(three()) println(three)//当方法没有入参的时候方法的括号可以不写 sayHello() } def add(x:Int,y:Int):Int={ x+y //最后一行就是返回值,不需要return } def three()=1+2 def..原创 2020-08-05 12:35:30 · 7852 阅读 · 0 评论 -
IDEA创建Scala
原创 2020-08-04 22:36:18 · 7661 阅读 · 0 评论 -
变量,lazy
文章目录变量定义asInstanceOf[]和isInstanceOf[]lazy变量定义定义 val xxx:类型 =xxx,例如 val age:Int=20也可以简写val age=20,一般都可以自动辨别出来asInstanceOf[]和isInstanceOf[]lazylazy延迟加载,当需要的时候可以调用它才会真正的执行,比如文件的io等可能会需要...原创 2020-08-04 22:12:14 · 7841 阅读 · 0 评论 -
Scala介绍和安装
Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序Scala的编译模型(独立编译,动态类加载)与Java和C#一 样,所以Scala代码可以调用Java类库Scala combines object-oriented and functional programming in one concise, high-level language. easy access to huge ecosystems of libraries.整合了面向对象和面向函数,很溶液调用jar包1.原创 2020-08-04 11:50:56 · 7796 阅读 · 0 评论