scala
文章平均质量分 55
scala学习教程和心得
flydean程序那些事
懂程序更懂你!微信公众号:程序那些事 个人主页:www.flydean.com 最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧,尽在程序那些事!
展开
-
java 8中 predicate chain的使用
文章目录简介基本使用使用多个Filter使用复合Predicate组合PredicatePredicate的集合操作总结java 8中 predicate chain的使用简介Predicate是一个FunctionalInterface,代表的方法需要输入一个参数,返回boolean类型。通常用在stream的filter中,表示是否满足过滤条件。 boolean test(T t...原创 2020-04-28 07:39:47 · 9196 阅读 · 0 评论 -
JDK 14的新特性:更加好用的NullPointerExceptions
JDK 14的新特性:更加好用的NullPointerExceptions让99%的java程序员都头痛的异常就是NullPointerExceptions了。NullPointerExceptions简称NPE,它是运行时异常的一种,也是java程序中最最容易出现的异常。出现了NullPointerExceptions之后我们怎么处理呢?一般情况下就是看日志,看一下到底哪一行出错了。如果这...原创 2020-04-28 07:33:26 · 9732 阅读 · 0 评论 -
Scala的Higher-Kinded类型
Scala的Higher-Kinded类型Higher-Kinded从字面意思上看是更高级的分类,也就是更高一级的抽象。我们先看个例子。如果我们要在scala中实现一个对Seq[Int]的sum方法,应该怎么做呢?def sum(seq: Seq[Int]): Int = seq reduce (_ + _)sum(Vector(1,2,3,4,5)) // 结果值: 15看起来很简...原创 2020-02-02 09:44:14 · 11443 阅读 · 0 评论 -
Scala的存在类型
Scala的存在类型存在类型也叫existential type,是对类型做抽象的一种方法。可以在你不知道具体类型的情况下,就断言该类型存在。存在类型用_来表示,你可以把它看成java中的?。下面是存在类型的具体例子:简写完整形式描述Seq[_]Seq[T] forSome {type T}T 可以是Any 的任意子类Seq[_ <: A]Seq[T...原创 2020-02-01 10:05:52 · 11331 阅读 · 0 评论 -
Scala的自定义类型标记
Scala的自定义类型标记Scala中有很多千奇百怪的符号标记,看起来是那么的独特,就像是一杯dry martini…好像黑夜中的萤火虫,那么耀眼,那么出众。好了言归正传,这一篇文章我们会讲一下Scala中的自定义类型标记,通过自定义类型标记可以将this指向额外的类型期望。我们先看一个观察者模式的例子:abstract class SubjectObserver { ...原创 2020-01-14 10:19:12 · 3015 阅读 · 1 评论 -
scala教程之:可见性规则
文章目录publicProtectedprivatescoped private 和 scoped protected和java很类似,scala也有自己的可见性规则,不同的是scala只有private和protected关键字,没有public关键字,同时scala还提供了更加细粒度的访问控制如protected[scope]和private[scope]。publicscala中默认的...原创 2020-01-13 10:43:00 · 2868 阅读 · 1 评论 -
Scala教程之:深入理解协变和逆变
文章目录函数的参数和返回值可变类型的变异在之前的文章中我们简单的介绍过scala中的协变和逆变,我们使用+ 来表示协变类型;使用-表示逆变类型;非转化类型不需要添加标记。假如我们定义一个class C[+A] {} ,这里A的类型参数是协变的,这就意味着在方法需要参数是C[AnyRef]的时候,我们可以是用C[String]来代替。同样的道理如果我们定义一个class C[-A] {}, 这...原创 2020-01-10 10:13:18 · 3141 阅读 · 1 评论 -
Scala教程之:Either
在之前的文章中我们提到了Option,scala中Option表示存在0或者1个元素,如果在处理异常的时候Option就会有很大的限制,因为Option如果返回None,那么我并不知道具体的异常到底是什么,这样scala引入了Either。顾名思意,Either表示或者是这一个元素或者是那个元素。这样在异常处理的时候就非常有用了。我们先看一下Either的定义:sealed abstract...原创 2020-01-09 10:34:06 · 3277 阅读 · 0 评论 -
Scala教程之:可变和不变集合
文章目录mutable HashMapimmutable HashMap集合在程序中是非常有用的,只有用好集合才能真正感受到该语言的魅力。在scala中集合主要在三个包里面:scala.collection, scala.collection.immutable和scala.collection.mutable。scala中引入不可变集合是为了方便程序的使用并减少在程序中的未知风险。如果一个集...原创 2020-01-08 14:10:25 · 3504 阅读 · 0 评论 -
Scala教程之:Future和Promise
文章目录定义返回Future的方法阻塞方式获取Future的值非阻塞方式获取Future的值Future链flatmap VS mapFuture.sequence() VS Future.traverse()Future.foldLeft VS Future reduceLeftFuture firstCompletedOfFuture zip VS zipWithFuture andThen...原创 2020-01-07 10:59:32 · 4037 阅读 · 0 评论 -
Scala教程之:PartialFunction
Scala中有一个很有用的traits叫PartialFunction,我看了下别人的翻译叫做偏函数,但是我觉得部分函数更加确切。那么PartialFunction是做什么用的呢?简单点说PartialFunction用在模式匹配中,是一个不完整的函数,它只实现了函数的部分功能,也就是列举了部分case的情况。我们先看下PartialFunction的定义:trait PartialFunc...原创 2020-01-06 09:53:53 · 3604 阅读 · 0 评论 -
Scala教程之:Enumeration
Enumeration应该算是程序语言里面比较通用的一个类型,在scala中也存在这样的类型, 我们看下Enumeration的定义:abstract class Enumeration (initial: Int) extends Serializable Enumeration是一个抽象类,它定义四个value方法,来设置内部的值, 四个value方法如下定义: /** Create...原创 2019-12-16 22:40:02 · 4711 阅读 · 0 评论 -
Scala教程之:Option-Some-None
文章目录Option和SomeOption和NoneOption和模式匹配在java 8中,为了避免NullPointerException,引入了Option,在Scala中也有同样的用法。他们就是Option, Some 和None.其中Option是一个抽象类。sealed abstract class Option[+A] extends Product with Serializa...原创 2019-12-16 22:35:59 · 4490 阅读 · 0 评论 -
Scala教程之:scala的参数
文章目录默认参数值命名参数scala的参数有两大特点:默认参数值命名参数默认参数值在Scala中,可以给参数提供默认值,这样在调用的时候可以忽略这些具有默认值的参数。def log(message: String, level: String = "INFO") = println(s"$level: $message")log("System starting") // p...原创 2019-12-16 22:32:28 · 4729 阅读 · 0 评论 -
Scala教程之:可扩展的scala
文章目录隐式类限制条件字符串插值s 字符串插值器f 插值器raw 插值器自定义插值器Scala是扩展的,Scala提供了一种独特的语言机制来实现这种功能:隐式类: 允许给已有的类型添加扩展方法字符串插值: 可以让用户使用自定义的插值器进行扩展隐式类隐式类是在scala 2.10中引入的,隐式类指的是用implicit关键字修饰的类。在对应的作用域内,带有这个关键字的类的主构造函数可用...原创 2019-12-16 22:28:53 · 4505 阅读 · 0 评论 -
Scala教程之:静态类型
文章目录泛类型型变协变逆变不变类型上界类型下界内部类抽象类型复合类型自类型隐式参数隐式转换多态方法类型推断Scala是静态类型的,它拥有一个强大的类型系统,静态地强制以安全、一致的方式使用抽象,我们通过下面几个特征来一一说明:泛类型型变类型上界类型下界内部类抽象类型复合类型自类型隐式参数隐式转换多态方法类型推断通过这些特性,为安全可重用的编程抽象以及类型安全的扩展提...原创 2019-12-16 22:24:42 · 4913 阅读 · 0 评论 -
Scala教程之:函数式的Scala
文章目录高阶函数强制转换方法为函数方法嵌套多参数列表样例类比较拷贝模式匹配密封类单例对象伴生对象正则表达式模式For表达式Scala是一门函数式语言,接下来我们会讲一下几个概念:高阶函数方法嵌套多参数列表样例类模式匹配单例对象正则表达式模式For表达式高阶函数高阶函数通常来讲就是函数的函数,也就是说函数的输出参数是函数或者函数的返回结果是函数。在Scala中函数是一等公民...原创 2019-12-16 22:20:36 · 4372 阅读 · 0 评论 -
Scala教程之:Scala基础
文章目录常量变量代码块函数方法类case类对象traitmain方法这篇文章我们大概过一下Scala的基础概念,后面的文章我们会有更详细的讲解Scala的具体内容。常量在Scala中常量用val关键字表示,如下所示:val x = 1 + 1println(x) // 2常量只能赋值一次,不能被多次赋值:x = 3 // This does not compile.在上面的例子...原创 2019-12-16 22:16:27 · 4461 阅读 · 0 评论 -
Scala教程之:面向对象的scala
文章目录面向对象的scalaUnified TypesClassesTraits面向对象的scala我们知道Scala是一种JVM语言,可以合java无缝衔接,这也就大大的扩展了scala的应用范围,大数据里面有名的spark就是使用scala编写的,那么scala到底有什么奥秘和特性呢?我们一一来揭秘。首先scala是一门面向对象的编程语言,他的面向对象性主要表现在如下几个方面:Uni...原创 2019-12-16 22:09:41 · 4464 阅读 · 0 评论