![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Scala Book
吹吹夏夜的风
data science
展开
-
Scala 和 ZIO程序的大致框架
ZIO的使用原创 2022-10-30 14:41:42 · 247 阅读 · 1 评论 -
样例类
另外一个为函数式编程提供支持的就是样例类。一个样例类具有一个普通类所有的功能,并且还有很多特别的,当编译器看到case关键字,会进行很多处理:默认情况下,样例类的构造器参数是 public val 字段,会对每个参数生成访问方法。在这个类的伴生对象中会创建 apply 方法。在这个类的伴生对象中会创建 unapply 方法。在类中生成 copy 方法。生成 equals 和 hashCode 方法。生成 toString 方法scala> case class Person(name翻译 2020-05-26 23:26:51 · 1003 阅读 · 0 评论 -
函数式编程
Scala让你以面向对象的风格,函数式的风格,或两者混合的风格 来写代码。函数式编程是一种编程风格,只用纯函数和不可变值来写程序。这是一个很大的话题,很难一下全部说清,下面的部分带你稍微看一下FP,并看看Scala是提供了怎样的工具给开发者来进行函数式编程。纯函数Scala提供的帮助你写函数式代码的第一个特性就是写纯函数的能力,有人定义纯函数是:函数的输出只取决于它的输入值它不会改变任何隐藏的状态它没有任何“后门”:它不从外部世界(包括命令行,web服务器,数据库,文件等)读数据,或写数据带外翻译 2020-05-25 23:30:56 · 155 阅读 · 0 评论 -
sbt 和 Scala Test
SBT 构建工具sbt使用标准的项目结果,你可以很方便构建你的第一个项目。项目目录结构:build.sbtproject/src/|-- main/ |-- java/ |-- resources/ |-- scala/|-- test/ |-- java/ |-- resources/ |-- scala/target/在build.sbt文件中:name := "HelloWorld"version := "1.0"scalaVersion翻译 2020-05-24 15:34:46 · 659 阅读 · 0 评论 -
Tuple和一个OOP的示例
Tuple是一个优雅的类,给你提供一种简单的方式把不同类型的数据存放在同一个容器里。class Person(var name: String)你可以不用创建下面这样的临时类来存放一些信息:class SomeThings(i: Int, s: String, p: Person)你可以像下面这样创建一个 tuple :val t = (3, "Three", new Person("Al"))只需要放一些元素到圆括号里,你就创建了一个Tuple。Tuple 中可以保护2到22个元素。访翻译 2020-05-24 14:54:02 · 110 阅读 · 0 评论 -
Scala中的集合
如果你是从Java 转来Scala的,你最好忘记Java集合类的使用方法,然后用Scala集合类所希望的方式来使用Scala集合。就像本书的一个作者说的,“就我个人经验来说,当我刚开始用Scala工作时,我试着去用Java集合类在我的Scala代码里,但慢慢的这样做会拖慢我的工作进展。”主要的Scala集合类你会经常使用到的Scala集合类有:ClassDescriptionArrayBuffer一个索引的可变序列List一个线性的(链表)不可变序列Vector一翻译 2020-05-23 22:45:44 · 234 阅读 · 0 评论 -
《scala book》 之 目录
Introduction 在这些页面中,Scala Book 提供了Scala编程语言的快速介绍和概述。这本书的写作采用了非正式的风格,包括了50多个小节。每一小节是足够长的,可以让你了解这节讲得语言特性是如何运作的;但也是很短的,可以让你在15分钟或更短时间内读完。先导:先有个对scala的感觉...翻译 2020-05-23 15:41:25 · 163 阅读 · 0 评论 -
特质和抽象类
Scala特质(trait)是这个语言的一个很棒的特性。你可以像java接口那样使用,也可以作为带有实现好的方法的抽象类来使用。Scala的类可以继承或者混入多个特质。Scala也有抽象类的概念,后面会展示什么时候应该用抽象类来代替特质。...翻译 2020-05-23 00:27:43 · 234 阅读 · 0 评论 -
match模式匹配和try/catch/finally表达式
Scala有一个 match 表达式的概念。翻译 2020-05-18 22:49:34 · 552 阅读 · 0 评论 -
scala中的类(4)
枚举是创建小常量组的有用工具,像一周的几天,一年的几月,一副牌中的花色等,针对有一组相关的常量值的情况。因为下面的代码有稍微往前跳了一些,我们就先不解释这些语法,但这展示了你如何创建一周中几天的枚举:sealed trait DayOfWeekcase object Sunday extends DayOfWeekcase object Monday extends DayOfWeekcase object Tuesday extends DayOfWeekcase object Wednesd翻译 2020-05-13 23:35:55 · 96 阅读 · 0 评论 -
scala中的类(3)
scala方法初探在scala中,方法是定义在类中的(像Java一样),但你也可以在REPL中定义方法用于测试目的。这部分会展示一些方法的示例,你就可以看到语法是什么样的。定义接收一个参数地方法下面是你如何定义一个名为 double 的方法,它接收一个名为 a 的输入参数,返回那个整数的双倍值:def double(a: Int) = a * 2def 是用于定义一个方法的关键字,输入参数 a 的类型为 Int 。当你把这个方法输入REPL后,你可以给它一个值来调用它:scala>翻译 2020-05-13 22:23:24 · 116 阅读 · 0 评论 -
scala中的类(2)
给构造器参数提供默认值scala让你可以为构造器参数提供默认值。例如,在上一节中,我们展示了你可以定义一个这样的 Socket :class Socket(var timeout: Int, var linger: Int) { override def toString = s"timeout: $timeout, linger: $linger"}这很好,但你可以通过为 timeout 和 linger 提供默认值来使这个类变得更好:class Socket(var timeout翻译 2020-05-12 23:53:44 · 101 阅读 · 0 评论 -
Scala 中的类(1)
为了支持面向对象编程,Scala提供了一个类构造。它的语法比Jaca,C#更简洁,但依然很容易使用和阅读。基本类构造器下面是个Scala类,它的构造器定义了两个参数:firstName 和lastName:class Person(var firstName: String, var lastName: String)根据这一定义,你可以这个创建 Person 实例:val p = new Person("Bill", "Panner")在类构造器中定义的参数会自动地创造类中的字段,你可以像翻译 2020-05-11 21:38:55 · 149 阅读 · 0 评论 -
控制结构
Scala具有你期望在编程语言中找到的基本控制结构,包括:if/then/elsefor循环try/catch/finally它也有一些唯一的结果,包括:match表达式for表达式在接下来的部分,我们会演示它们。if/then/else一个基本的Scala if语句看起来如下:if (a == b) doSomething()你也可以这样写:if (a == b) ...翻译 2020-04-10 21:56:34 · 251 阅读 · 0 评论 -
字符串的两个亮点和命令行I/O
Scala 的String 有很多很好的特性,但我们想花些时间强调两个特性,这两个特性在书的后面会使用到。第一个特性是Scala有一个很好的像Ruby似的方式来合并多个字符串。给定下面三个变量:val firstName = "John"val mi = 'C'val lastName = "Doe"如果你喜欢的话,你可以像下面这样把它们连接在一起:val name = firstN...翻译 2020-04-07 20:25:48 · 147 阅读 · 0 评论 -
是否标明类型和一些内建的类型
是否标明类型是可选的像我们在前面部分展示的,当你创建一个变量时可以明确的把它的类型标出来:val count: Int = 1val name: String = "Alvin"然而,通常你会去掉类型,Scala会为你推断出类型:val count = 1val name = "Alvin"当你去掉类型时,大多数情况下你的代码会更容易读,所以,这种推断的方式是更受欢迎的。标注出...翻译 2020-04-04 21:18:17 · 92 阅读 · 0 评论 -
Scala的REPL和其两种变量的类型
REPL Scala REPL (“Read-Evaluate-Print-Loop”) 是命令行解释器,在这你可以测试你的Scala代码。只需在你的操作系统命令行里输入 scala ,就可以启动一个 REPL 会话。就像下面:$ scalaWelcome to Scala 2.13.0 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_13...翻译 2020-04-02 22:37:11 · 782 阅读 · 0 评论 -
Hello World
自从《C编程语言》这本书出版以来,很多编程书都以 “Hello,World” 示例开始,按照传统,下面是Scala的一个 “Hello,World” 示例:object Hello { def main(args: Array[String]) = { println("Hello, world") }}用文本编辑器,把上面的代码保存在 Hello.sc...翻译 2020-03-30 22:10:51 · 89 阅读 · 0 评论 -
Scala特性
Scala的名字来自 scalable这个词,并且这个名字是真实的。它被用来驱动世界上最繁忙的网站,包括twitter、网飞、tumblr、linkedin、foursquare等等。下面还有一些关于Scala的重要信息:这是一种现代编程语言,由Martin Odersky(javac之父)创建,并受到java、ruby、smalltalk、ml、haskell、erlang等的影响。...翻译 2020-03-28 21:34:23 · 211 阅读 · 0 评论 -
学Scala之前的准备工作
在本书中,我们假设你已经熟悉类似Java的其他语言,所以我们不会花费太多的时间在编程基础上。也就是说,我们假设你先前明白像 for 循环,类和方法这样的概念,所以我们通常差不多这样写:“在Scala中你怎样创建一个类”。还有,在读这本书之前,有一些好东西要知道。安装Scala可以去官网查看。。。。。。注解要提前知道的一个好东西是Scala中的注解就像Java中的注解(还有很多其他语言...翻译 2020-03-28 20:00:23 · 84 阅读 · 0 评论 -
序言:Scala的特性概览--旋风之旅
在这本书中,我们希望证明Scala是优美的,现代的,富于表现力的编程语言。为了证明这一点,在这第一章节中,我们将直接介绍Scala的主要特性。在这之后,这本书会以一个更传统的“入门”章节开始。 本书假设你曾用过一种像java那样的语言,准备来看一系列Scala的例子,来感受一下这门语言。概述 在进入具体示例之前,这里有一些关于Scala的重要事情需要知道:它是一门高级语言它是静...翻译 2020-03-27 17:50:42 · 177 阅读 · 0 评论