Scala
文章平均质量分 70
gnn_explorer
爱学习, 爱工作, 爱生活.
展开
-
静态类型语言和动态类型语言区别
静态类型语言如果变量的类型在编译时是已知的,那么语言就是静态类型的。对于某些语言来说,必须指定每个变量的类型(例如:Java、C、c++);其他语言提供了某种形式的类型推断,即类型系统推断变量类型的能力(例如:OCaml、Haskell、Scala、Kotlin)。主要优点是所有类型的检查都可以由编译器完成,因此在非常早期的阶段就可以捕捉到很多小错误。示例:C,C ++,Java,Rust,Go,Scala动态类型语言如果一种语言的类型与运行时值相关联,而不是命名变量/字段/等等,那么它就是动态类原创 2020-09-16 19:07:36 · 230 阅读 · 0 评论 -
Scala 辅助构造函数
辅助构造函数(Auxiliary constructors)有时在一个类中需要多个构造函数。在Scala中,主构造函数之外的构造函数称为辅助构造函数。每个辅助构造函数必须调用与第一个操作相同的类的另一个构造函数。换句话说,每个Scala类中的每个辅助构造函数中的第一个语句都具有“this(…)”形式。被调用的构造函数要么是主构造函数,要么是在调用构造函数之前以文本形式出现的另一个辅助构造函数。这...翻译 2019-04-08 16:41:10 · 444 阅读 · 0 评论 -
Scala 分号推理的规则
分号推理的规则语句分离的精确规则非常简单。简而言之,除非下列条件之一为真,否则行尾被视为分号:所在行以不合法的单词结尾,如句号或中缀运算符。下一行以不能作为语句开始的词开头。行结束时是在括号(…)或中括号[…]内部,因为这些结构不能包含多个语句。...翻译 2019-04-01 19:16:16 · 133 阅读 · 0 评论 -
Scala 操作符优先级和关联性
操作符优先级(一些其他特殊字符)* / %+ -:= !< >& ˆ |(字母)(赋值操作符)翻译 2019-04-04 17:22:37 · 564 阅读 · 0 评论 -
Scala 基础教程10 -- 多个参数列表 (CURRYING)
10 多个参数列表(CURRYING)方法可以定义多个参数列表。当使用较少数量的参数列表调用方法时,这将产生一个函数,将缺少的参数列表作为其参数。这正式称为currying。这是一个示例,在Scala集合的Traversable trait中定义:def foldLeft[B](z: B)(op: (B, A) => B): BfoldLeft将二元运算符op应用于初始值z以及此可...翻译 2018-11-01 19:43:15 · 859 阅读 · 2 评论 -
Scala基础教程9 -- 嵌套方法
9 嵌套方法在Scala中,可以嵌套方法定义。以下对象提供了factorial一种计算给定数字的阶乘的方法:def factorial(x: Int): Int = { def fact(x: Int, accumulator: Int): Int = { if (x <= 1) accumulator else fact(x - 1, x * accum...翻译 2018-11-01 19:38:47 · 130 阅读 · 0 评论 -
Scala基础教程8 -- 高阶函数
8 高阶函数高阶函数将其他函数作为参数或作为结果返回函数。这是可能的,因为函数是Scala中的第一类值。这个术语在这一点上可能会有点混乱,我们对于将函数作为参数或返回函数的方法和函数使用短语“高阶函数”。其中一个最常见的例子是map Scala中可用于集合的高阶函数。val salaries = Seq(20000, 70000, 40000)val doubleSalary = (x: ...翻译 2018-11-01 19:33:34 · 154 阅读 · 0 评论 -
Scala基础教程7 -- 与MIXINS的类组成
7 与MIXINS的类组成Mixins是用于组成一个类的特质。abstract class A { val message: String}class B extends A { val message = "I'm an instance of class B"}trait C extends A { def loudMessage = message.toUpperCa...翻译 2018-11-01 19:27:40 · 150 阅读 · 0 评论 -
Scala基础教程6 -- 元组
6 元组在Scala中,元组是一个可以容纳不同类型元素的类。元组是不可变的。当我们必须从函数返回多个值时,元组会派上用场。元组可以创建为:val ingredient = ("Sugar" , 25):Tuple2[String, Int]Scala中的元组是一系列类:Tuple2,Tuple3等,直到Tuple22。因此,当我们创建一个包含n个元素(n位于2和22之间)的元组时,Sc...翻译 2018-11-01 19:21:30 · 132 阅读 · 0 评论 -
Scala 基础教程5 -- 特质
5 特质特质 (Traits) 用于在类 (Class)之间共享程序接口 (Interface)和字段 (Fields)。 它们类似于Java 8的接口。 类和对象 (Objects)可以扩展特质,但是特质不能被实例化,因此特质没有参数。5.1 定义一个特质最简化的特质就是关键字trait+标识符:trait HairColor特质作为泛型类型和抽象方法非常有用。trait Iter...翻译 2018-11-01 19:15:02 · 125 阅读 · 0 评论 -
Scala基础教程4 -- 类
4 类Scala中的类是用于创建对象的蓝图,其中包含了方法、常量、变量、类型、对象、特质、类,这些统称为成员。类型、对象和特质将在后面的文章中介绍。4.1 类定义一个最简的类的定义就是关键字class+标识符,类名必须是大写。class Userval user1 = new User关键字new被用于创建类的实例。User由于没有定义任何构造器,因而只有一个不带任何参数的默认构造器...翻译 2018-11-01 18:42:26 · 112 阅读 · 0 评论 -
Scala基础教程3 -- 统一类型
3 统一类型在Scala中,所有的值都有类型,包括数值和函数。下图阐述了类型层次结构的一个子集。3.1 Scala类型层次结构Any是所有类型的超类型,也称为顶级类 型。它定义了一些通用的方法如equals、hashCode和toString。Any有两个直接子类:AnyVal和AnyRef。AnyVal代表值类型。有9个预定义的非空的值类型分别是:Double、Float、Long、I...翻译 2018-11-01 17:46:45 · 189 阅读 · 0 评论 -
Scala基础教程2 -- 基础
2 基础2.1 表达式表达式是可计算的语句。1 + 1你可以使用println来输出表达式的结果。println(1) // 1println(1 + 1) // 2println("Hello!") // Hello!println("Hello," + " world!") // Hello, world!常量(Values)你可以使用val关键字来给表达式的结果命名。..翻译 2018-11-01 17:37:45 · 120 阅读 · 0 评论 -
Scala 基础教程1 -- 简介
TOUR OF SCALANOTE: 文档包含了对于大多数Scala特性的简单介绍,主要针对的是这门语言的初学者。1 简介1.1 Scala是什么?Scala是一门现代的多范式语言,志在以简洁、优雅及类型安全的方式来表达常用的编程模型。它平滑地集成了面向对象和函数式语言的特性。1.2 Scala是面向对象的鉴于一切值都是对象,可以说Scala是一门纯面向对象的语言。对象的类型和行为是由...翻译 2018-11-01 17:20:13 · 319 阅读 · 0 评论