10 2020 档案

摘要:一个对象使用一个unapply称之为对象提取器。它就像一个构造函数使用apply接收一个参数然后创建一个对象。而unapply则是方法接收一个对象然后返回实参。这个用的多的是在模式匹配和局部函数。 import scala.util.Random object CustomerID { def ap 阅读全文
posted @ 2020-10-30 13:53 周周周文阳 阅读(93) 评论(0) 推荐(0) 编辑
摘要:正则表达式是一个用于查找模式的字符串。任何字符串都可以用一个 .r方法 转换成正则表达式。 import scala.util.matching.Regex val numberPattern: Regex = "[0-9]".r numberPattern.findFirstMatchIn("aw 阅读全文
posted @ 2020-10-29 15:07 周周周文阳 阅读(119) 评论(0) 推荐(0) 编辑
摘要:object 是一个类有且唯一的实例。当对象被引用时,它是懒模式创建的,就像 lazy val一样。 作为一个顶级的值,对象是单例的。 作为一个封闭类的成员或者局部值时,它的行为更像是一个lazy val。 定义一个单例的对象 对象是一个值。定义一个对象看起来像定义一个类,但是是用关键字 objec 阅读全文
posted @ 2020-10-28 16:03 周周周文阳 阅读(83) 评论(0) 推荐(0) 编辑
摘要:模式匹配是一个检查值是否属于某个模式的机制。成功的匹配可以将一个值分解成多个组成部分。它相当于java中的switch的一个强化版本,并且可以代替if/else的很多场景。 语法 一个匹配表达式有一个值,然后接一个match关键字,最后接一个case 短语 import scala.util.Ran 阅读全文
posted @ 2020-10-28 11:48 周周周文阳 阅读(96) 评论(0) 推荐(0) 编辑
摘要:Case 类和一般的类类似,但是有些细小的区别,后面会讲。case 类对不可变数据建模非常友好。在后面的介绍中,我们将会在模式匹配中展示其优越性 定义一个Case类 一个最小的case类需要关键字 case class,一个标志符和一个参数列表(参数列表可以为空) case class Book(i 阅读全文
posted @ 2020-10-28 10:54 周周周文阳 阅读(167) 评论(0) 推荐(0) 编辑
摘要:方法可以有多个形参列表 例子 这里有个例子,在Scala集合Api中,特性Iterable 定义如下: trait Iterable[A] { ... def foldLeft[B](z: B)(op: (B, A) => B): B ... } foldLeft 将两个参数的函数 op 应用于一个 阅读全文
posted @ 2020-10-27 17:57 周周周文阳 阅读(212) 评论(0) 推荐(0) 编辑
摘要:在Scala中可以在方法中嵌套定义方法。下面的例子展示了 factorial 方法用于计算给定数字的阶乘 def factorial(x: Int): Int = { def fact(x: Int, accumulator: Int): Int = { if (x <= 1) accumulato 阅读全文
posted @ 2020-10-27 17:16 周周周文阳 阅读(75) 评论(0) 推荐(0) 编辑
摘要:高阶函数是将其他函数作为形参,或者以函数作为返回结果。因为在Scala中,函数是一等公民。这个术语可能听起来有点乱,但实际上我们把 以函数作为形参或以函数作为返回结果的函数和方法统称为高阶函数。 在一个纯粹的面向对象编程中,隐藏可能会暴露对象内部状态的参数是一个很好的解决方案,泄漏内部状态可能会破坏 阅读全文
posted @ 2020-10-27 13:20 周周周文阳 阅读(170) 评论(0) 推荐(0) 编辑
摘要:混入是特性常用的手段用来构建一个类 abstract class A { val message: String } class B extends A { val message = "I'm an instance of class B" } trait C extends A { def lo 阅读全文
posted @ 2020-10-26 17:35 周周周文阳 阅读(77) 评论(0) 推荐(0) 编辑
摘要:在Scala中,元组是一个包含了固定数量的元素的值,且每个元素都有自己的类型。元组是不可变的。 元组特别适用于一个方法返回多个值的场景。 一个二元元组可以按如下方式创建: val ingredient = ("Sugar" , 25) 这个元组包含了一个 String 类型的元素和一个 Int 类型 阅读全文
posted @ 2020-10-23 10:17 周周周文阳 阅读(128) 评论(0) 推荐(0) 编辑
摘要:特性用于类之间的接口和属性共享。它们跟java8中的接口有些类似【注:这里官方说的很准确,类似于java8的接口,而不是java7及之前的接口。因为trait同时可以声明抽象方法,也可以实现抽象方法。相当于是java接口的default的一个推广使用。】。类和伴生对象可以继承特性,但是特性不能被实例 阅读全文
posted @ 2020-10-23 10:00 周周周文阳 阅读(100) 评论(0) 推荐(0) 编辑
摘要:当我们调用方法时,你可以用形参名标记实参,如下 def printName(first: String, last: String): Unit = { println(first + " " + last) } printName("John", "Smith") // Prints "John 阅读全文
posted @ 2020-10-22 13:35 周周周文阳 阅读(68) 评论(0) 推荐(0) 编辑
摘要:Scala提供了参数默认值的功能,该默认值可以用于调用那些被省略的参数。 def log(message: String, level: String = "INFO") = println(s"$level: $message") log("System starting") // prints 阅读全文
posted @ 2020-10-22 13:28 周周周文阳 阅读(106) 评论(0) 推荐(0) 编辑
摘要:类在Scala中是创建对象的蓝图。类可以包含方法、值、变量、类型、对象、特性和类,这些统统称为类的成员。类型,对象和特性将在之后的章节介绍。 定义一个类 一个最小的类的定义,只需要一个简单 class关键加上一个标志符。类名的首字母应该要大写。 class User val user1 = new 阅读全文
posted @ 2020-10-22 13:16 周周周文阳 阅读(112) 评论(0) 推荐(0) 编辑
摘要:在Scala中,所有的值都有一个类型,包括数值和函数。下面的这张图阐释了类型的一个层次关系子集。 Scala类型层次结构 Any 是所有类型的父类型,也被称之为顶级类型。它里面定义的一些通用的方法,例如 equals,hashCode,和toString. Any 有两个直接的子类: AnyVal 阅读全文
posted @ 2020-10-22 10:15 周周周文阳 阅读(114) 评论(0) 推荐(0) 编辑
摘要:本章将介绍scala语言的基础内容 尝试在浏览器中使用Scala 你可以使用ScalaFiddle在浏览器中运行Scala。这是一种简单、零基础的方式来实验Scala代码段。 访问网址 https://scalafiddle.io. 复制 println("Hello, world!") 进左边的面 阅读全文
posted @ 2020-10-21 10:56 周周周文阳 阅读(140) 评论(0) 推荐(0) 编辑
摘要:介绍 欢迎来到scala之旅 本次介绍之旅通过一些简短的说明来介绍scala中最常用的一些特性。本次介绍之旅更适用于刚接触这门语言的新手。 这是一个简短的介绍,并不能很全面地介绍覆盖这门语言。如果你想更加深入地理解这门语言的细节,可以尝试去阅读书籍或者参考其他资源。 什么是scala? Scala是 阅读全文
posted @ 2020-10-20 14:30 周周周文阳 阅读(257) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示