Scala
GYT0313
邮箱:guyongtao@qq.com
展开
-
Scala在Linux下的安装
1. 下载官网:https://www.scala-lang.org/download/2. 解压解压路径自己随意:tar -zxvf scala-2.12.8.tgz -C /home/hadoop/配置环境变量:vim ~/.bashrc# Scalaexport PATH=$PATH:/home/hadoop/scala-2.12.8/binsource ~/.b...原创 2019-03-19 19:45:13 · 4889 阅读 · 1 评论 -
10-特质-Scala
前言本节将介绍Scala 中的特质。特质是Scala 代码附中的基础单元。特质将方法和字段定义封装起来,然后通过将它们混入类的方式来实现复用。不同于类继承,类可以同时混入任意数量的特质。环境:Windows + Scala-2.12.81. 特质如何工作特质和类的定义很像,如:12.1.scalatrait Run { def running() = { println...原创 2019-04-12 18:36:00 · 324 阅读 · 0 评论 -
6-函数和闭包-Scala
前言本节将介绍Scala中的函数和闭等相关知识。环境:Windows + Scala-2.12.8代码见GitHub:1. 方法定义函数的最常用的方式是作为某个对象的成员,这样的函数被称为方法。下面给出一个示例,打印超出指定长度的行。文件:8.1.scala - 注:该文件属于完整的Scala应用程序(main入口),为了简单操作,依然使用执行脚本的方式内容包括中文会报错。//...原创 2019-04-09 19:41:15 · 224 阅读 · 0 评论 -
IDEA执行Scala程序依赖报错 - io.netty.buffer.PooledByteBufAllocator.metric()
IDEA 执行Scala 依赖报错:Exception in thread "main" java.lang.NoSuchMethodError: io.netty.buffer.PooledByteBufAllocator.metric()Lio/netty/buffer/PooledByteBufAllocatorMetric;at org.apache.spark.network.uti...原创 2019-05-06 18:49:19 · 1282 阅读 · 0 评论 -
14-使用其他集合类
前言本节介绍除List之外的其他集合类型,如Set、Map。1. 序列序列类型可以用来处理依此排列分组的数据。由于元素是有次序的,所以可以使用下标如1、2、3...等访问。原创 2019-06-18 21:07:24 · 293 阅读 · 0 评论 -
12-样例类和模式匹配
前言该节简单介绍样例类(case class)和模式匹配(pattern matching),以及各种模式、密封类(sealed class)、Option类型。1. 一个简单的例子这里先用一个简单的例子来切入对样例类和模式匹配的学习。文件 15.1.scalaabstract class Exprcase class Var(name: String) extends Exprca...原创 2019-06-14 21:05:25 · 731 阅读 · 0 评论 -
11-包和引入
前言这里介绍在Scala中,包和引入的相关操作。会与Java作对比。原创 2019-06-11 21:01:33 · 290 阅读 · 0 评论 -
13-使用列表
前言本节详细介绍Scala中的列表,和很多常用操作。1. List字面量列表和数组非常像,不过有两个重要区别:列表是不可变的列表的结构是递归的(数组是平的)2. List类型跟数组一样,列表是同构的:所有元素必须是同一个类型。如:Scala的列表类型是协变的。也就是说如果S是T 的子类型,那么List[S]就是List[T]的子类型。如:上面两个操作结果都是List(...原创 2019-06-17 20:29:03 · 382 阅读 · 0 评论 -
15-隐式转换和隐式参数
1. 隐式规则隐式定义指的是哪些我们允许编译器插入程序以解决类型错误的定义。隐式转换受如下规则约束:标记规则:只有标记为implicit的定义才可用。作用域规则:被插入的隐式转换必须是当前作用域的单个标识符,或者跟隐式转换的源类型或目标类型有关联。每次一个规则:每次只能有一个隐式定义被插入。显示优先原则:只要代码按编写的样子能够通过类型检查,就不尝试隐式定义。哪些地方会尝试隐式转...原创 2019-08-20 14:24:56 · 355 阅读 · 0 评论 -
5-内建的控制结构-Scala
前言本节将介绍Scala中的控制结构,并给出了很多代码示例。同时,比较指令式代码和函数式代码。环境:Windows + Scala-2.18.8代码见GitHub:https://github.com/GYT0313/Scala-Learning注:下面所有代码有些是在脚本中执行,有的实在Scala解释器中执行。1. if 表达式脚本文件:7.1.scala – 注:博主在Git...原创 2019-04-08 21:31:51 · 274 阅读 · 0 评论 -
9-Scala的继承关系
前言本节将介绍Scala中的继承关系,包括Any、AnyVal、AnyRef。环境:Windows + Scala-2.12.81. Scala 的类继承关系在Any 类的源代码中有如下方法:package scalaabstract class Any { def equals(that: Any): Boolean def hashCode(): Int def t...原创 2019-04-11 22:07:57 · 496 阅读 · 0 评论 -
4-函数式对象-Scala
前言本节将展示类参数、构造方法、方法、操作符、私有成员、重写、前置条件检查、重载和自引用。环境:Windows + Scala-2.12.81. Rational 类的规格定义Rational 即有理数,即 1 / 2 的形式表示的数。下面将使用构建Rational 类来实现加、减、乘、除。另外,设计的Rational 是不可变的对象,即不能再原有的对象中改变,而是经过计算后生成一个新...原创 2019-04-08 11:08:04 · 245 阅读 · 0 评论 -
Scala之闭包
闭包闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量。闭包通常来讲可以简单的认为是可以访问一个函数里面局部变量的另外一个函数。代码比如,这里的y 是一个匿名函数,但是y 引用到了函数之外的变量。所以,y 成为一个闭包。想到这里,博主猜测一个函数能否引用另一个函数:显然这是不可以的。完!...原创 2019-03-19 19:54:32 · 211 阅读 · 0 评论 -
7-控制抽象-Scala
前言本节将介绍如何创建新控制抽象,以及柯里化和传名参数。环境:Windows + Scala-2.12.8代码见GitHub:1. 减少代码重复假设有这样一个场景,你需要编写一段代码提供API,给调用方用于查询当前目录下符合条件的文件名,如查询以"xxx"结尾的文件,如:文件:9.1.scala// reduce repeat codeimport java.io.Fileob...原创 2019-04-10 10:15:46 · 686 阅读 · 0 评论 -
Idea运行Scala -- Error running 'Scala Console': Module is not specified
解决办法选择Run 窗口:原状态为:改为(选择项目名称):完!原创 2019-04-06 19:43:11 · 2456 阅读 · 1 评论 -
8-组合和继承-Scala
前言本节将以一个类库的形式,讨论抽象方法、无参方法、类的扩展、重写方法和字段、参数化字段、调用超类的构造方法等等。环境:Windows + Scala-2.12.8代码见GitHub:https://github.com/GYT0313/Scala-Learning1. 一个二维的布局类库将创建一个用于构建和渲染二维布局元素的类库,以此作为示例。将定义可以从数组、线和矩形构造出元素对...原创 2019-04-10 22:16:26 · 408 阅读 · 0 评论 -
1-Scala入门
前言今天开始正式系统的学习Scala,记录博主的学习过程、解决遇到的问题。参考数书籍:《Scala编程》-第3版Scala-2.12.8安装使用:Linux下安装可参考:https://blog.csdn.net/qq_38038143/article/details/88670650Windows下安装可参考:http://www.runoob.com/scala/scala-in...原创 2019-04-06 21:23:39 · 280 阅读 · 0 评论 -
IDEA模板配置、代码提示 - Scala
1. 代码提示修改默认快捷键默认为 Ctrl + 空格,实际中并没有起作用,修改为 Alt + /。代码中测试2. 注释模板以Scala为例,Java同理(两者也可以通用)新建模板:设置点击change(上图中的正下方),选择那种语言使用Edit variables,设置自动获取变量配置完后,点击OK。file: * @File: $...原创 2019-04-07 10:32:40 · 5300 阅读 · 0 评论 -
2-类和对象(Scala)
前言本节介绍Scala 的类和对象。环境:windows + Scala-2.12.81. 类、字段和方法定义类实例化一个类定义一个完整的类,包括成员、方法文件名:ChecksumAccumulator.scala// 计算校验和class ChecksumAccumulator { private var sum = 0 def add(b: Byte): U...原创 2019-04-07 11:50:36 · 210 阅读 · 0 评论 -
03-基础类型和操作-Scala
前言本节介绍Scala的基础类型和相关操作,与Java很相似,但又有与Java的不同之处。环境:Windowos + Scala-2.12.81. 一些基础类型与Java的基础类型、取值区间完全相同。Byte、Short、Int、Long和Char称为整数类型。整数类型加上Float和Double称为数值类型。2. 字面量字面量是在代码中直接写入常量值的一种方式。整数字面量...原创 2019-04-07 19:28:09 · 193 阅读 · 0 评论 -
16-提取器
1. 示例:提取电子邮件地址定义了unapply(提取)函数的对象就可以称为提取器,而apply(注入)不是必须的。object EMail { // 注入(可选) def apply(user: String, domain: String) = user + "@" + domain // 提取(必须) def unapply(str: String): Option[(S...原创 2019-08-23 15:28:07 · 356 阅读 · 0 评论