印度朋友手把手教你学Scala(10):Scala里的样本对象

/**
 * 谨献给我最爱的YoYo 
 * 原文出处:https://madusudanan.com/blog/scala-tutorials-part-10-case-objects-in-scala/
 * @author dogstar.huang <chanzonghuang@gmail.com> 2017-03-14
 */

本翻译已征得Madusudanan.B.N同意,并链接在原文教程前面。

样本对象

我们已经学习了对象样本类。样本对象是这两者的合体,即它是一个类似对象的单例并且有在样本类中大量的和大量的样板。唯一的区别是,样板是为一个对象而不是一个类完成的。

这是关于Scala系列教程的第十章。点击这里可查看整个系列。

目录

  • 简介
  • 样本对象和样本类
  • 样本对象的优势
  • 结论

简介

如果你需要针对样本类的样板,样本对象是非常有用的。

它们可以这样创建。

case object CaseObjectDemo {

  println("I am a case object")

}

当你将一个样本对


继续阅读»»»

印度朋友手把手教你学Scala(8):特质

/**
 * 谨献给我最爱的YoYo 
 * 原文出处:https://madusudanan.com/blog/scala-tutorials-part-8-traits/
 * @author dogstar.huang <chanzonghuang@gmail.com> 2017-03-13
 */

本翻译已征得Madusudanan.B.N同意,并链接在原文教程前面。

特质

这是关于Scala系列教程的第八章。点击这里可查看整个系列。

目录

  • 特质简介
  • 一个基本的特质 - 语法解释
  • Java的抽象变量概念
  • 抽象变量的类型注解
  • 混合抽象和具体成员
  • Java语法区别
  • 扩展特质
  • with关键字
  • 混入类的组成
  • 结论

特质简介

对于Scala,特质就像样本类那样,是一个新的概念。它们补充了OOP中已有的特性。

理解特质一个更好的方式是把它和Java语言的特性进行比较。

它们类似于接口,但它们可以有方法的实现,它们像抽象类一样工作,除了特质没有构造函数外。

最好的方式是通过例子来了解他们。所以,让我们来


继续阅读»»»

印度朋友手把手教你学Scala(7):无处不在的对象

/**
 * 谨献给我最爱的YoYo 
 *
 * 原文出处:https://madusudanan.com/blog/scala-tutorials-part-7-objects-everywhere/
 * @author dogstar.huang <chanzonghuang@gmail.com> 2017-03-06
 */

本翻译已征得Madusudanan.B.N同意,并链接在原文教程前面。

无处不在的对象

在这篇文章中,我们会讨论为什么Scala中对象的概念更为普遍,以及它的优点是什么。大部分示例是数据类型,因为它们是Scala语言的基础。

这是关于Scala系列教程的第七章。点击这里可查看整个系列。

目录

  • 简介
  • 作为对象的数据类型
  • 类型的操作
  • 创建自定义类型
  • Java数据类型装箱/拆箱的比较
  • Bigint例子
  • 类型转换(Typecasting)
  • 值比较
  • 在其他语言的实现和一些注意事项

简介

Scala是一种多范式语言,主要是结合了面向对象和函数式。

为了支持这种语言,有必要制定一个围绕什么东西而构建的想法。正


继续阅读»»»

印度朋友手把手教你学Scala(5):类

/**
 * 谨献给我最爱的YoYo 
 *
 * 原文出处:https://madusudanan.com/blog/scala-tutorials-part-5-classes/
 * @author dogstar.huang <chanzonghuang@gmail.com> 2017-03-05
 */

本翻译已征得Madusudanan.B.N同意,并链接在原文教程前面。

这是关于Scala系列教程的第五章。点击这里可查看整个系列。

目录

  • 简介
  • 访问和可见性
  • 构造器
  • 类参数和类字段
  • 类参数提升
  • 直接访问成员
  • 不可变对象和可变对象
  • 何时使用getter和setter
  • Scala风格的getter和setter
  • 辅助构造器
  • 默认构造参数
  • 抽象类
  • override关键字
  • 何时使用抽象类

简介

Scala中类的概念非常类似于他们在Java中的同行。但是它们提供的功能有很多不同。

首先,让我们举个简单的例子。

// 典型Java风格的类
class Person {

继续阅读»»»

印度朋友手把手教你学Scala(4):对象

/**
 * 谨献给我最爱的YoYo
 * 原文出处:https://madusudanan.com/blog/scala-tutorials-part-4-objects/
 * @author dogstar.huang <chanzonghuang@gmail.com> 2017-03-01
 */

本翻译已征得Madusudanan.B.N同意,并链接在原文教程前面。

Scala的对象

这是关于Scala系列教程的第四章。点击这里可查看整个系列。

在这章,我们将讲解objects

目录

  • 什么是对象?
  • Java单例的概念和Scala对象的比较
  • 静态与面向对象编程
  • 伴生对象
  • 重温Hello World
  • 深入理解main方法

什么是对象?

在Scala里,object是一个关键字,在这个教程系列的第一章我们就知道了。

再来回顾看一下Hello World这段代码。

object Test {  
    def main(args : Array[String]){
      printl

继续阅读»»»

印度朋友手把手教你学Scala(9):函数式编程简介

/**
 * 谨献给我最爱的YoYo
 * 原文出处:https://madusudanan.com/blog/scala-tutorials-part-9-intro-to-functional-programming/
 * @author dogstar.huang <chanzonghuang@gmail.com> 2017-02-21
 */

本翻译已征得Madusudanan.B.N同意,并链接在原文教程前面。

由于它的优雅和性能特点,Scala的函数式编程范式在最近几年变得相当流行。

这是关于Scala系列教程的第九章。点击这里可查看整个系列。

在这系列里的前面8章里,我从来都没谈及过Scala函数式编程这一方面,那是因为如果你是这个范式的新手(这世界大多数是),那么伴随着完全陌生和困难的范式,学习这门语言和环境会有一点难学,那就是为什么我一开始没有谈及他们。既然我们已经覆盖了面向对象编程方面到达一定程度,理解起来就稍微更简单了。

目录

  • 看看在2017年的摩尔定律
  • 什么是编程范式?
  • 理解冯·诺依曼编程风格
  • 冯·诺依曼

继续阅读»»»

印度朋友手把手教你学Scala(6):样本类

/**
 * 谨献给我最爱的YoYo
 * 原文出处:https://madusudanan.com/blog/scala-tutorials-part-6-case-classes/
 * @author dogstar.huang <chanzonghuang@gmail.com> 2017-03-04
 */

本翻译已征得Madusudanan.B.N同意,并链接在原文教程前面。

样本类

样本类和类非常相似,但样本类做了很多东西并且有一些简洁的功能。

这是关于Scala系列教程的第六章。点击这里可查看整个系列。

目录

  • 声明样本类
  • 不用new关键字创建类
  • 访问变量
  • 默认和部分构造器参数
  • 不可变对象
  • 结构相等 - 自动生成equals
  • 引用相等
  • 字符串表示
  • 自动生成hash码
  • 样本类复制
  • 样本类反编译

声明样本类

以下代码声明了一个叫做Block的类,有三个成员变量:idtitleisbn

case class Book(id:Int,title:String,isbn:Long)

继续阅读»»»

印度朋友手把手教你学Scala(3):方法

/**
 * 谨献给我最爱的YoYo
 * 原文出处:https://madusudanan.com/blog/scala-tutorials-part-3-methods/
 * @author dogstar.huang <chanzonghuang@gmail.com> 2017-02-25
 */

本翻译已征得Madusudanan.B.N同意,并链接在原文教程前面。

Scala里的方法

自从2015年12月写了最后一篇关于Scala的文章后,到现在已经有很长一段时间了。希望我能写多一点。^_^

这是关于Scala系列教程的第三章。点击这里可查看整个系列。

这篇文章是关于怎么处理Scala里的方法。大部分都是关于风格,但当我们进入函数式编程的世界前这是很重要的。

目录

  • Primer
  • 方法的语法
  • Unit类型
  • 不可变的方法参数
  • return关键字的注意事项
  • 异构返回类型(Heterogeneous return types)
  • 传值调用和传名调用
  • 方法参数的默认值
  • 剔除方法

Primer

回到那些汇编编程的日子,那时有


继续阅读»»»

印度朋友手把手教你学Scala(1):Scala入门

/**
 * 谨献给我最爱的YoYo
 * 原文出处:https://madusudanan.com/blog/scala-tutorials-part-1-getting-started/
 * @author dogstar.huang <chanzonghuang@gmail.com> 2017-02-23
 */

本翻译已征得Madusudanan.B.N同意,并链接在原文教程前面。

Scala入门

这是关于Scala系列教程的第一章。点击这里可查看整个系列。

如果你之前是Java开发人员,这里将会有很多让你头疼的东西,而最容易的学习方式就是忘却已知的一切,从头学起(译者注:即保持空性)。

视频:《就像水那样,我的朋友!!》

让我们开始吧。

目录

以下是本章将会覆盖的内容。

  • Scala简介和环境搭建
  • Scala REPL,一段简短的介绍
  • Hello World !!
  • 变量
  • 引用和值不可变性
  • 幕后的不可变性
  • valfinal的对比
  • Scala里的数据类型
  • 类型接口
  • 变量初始化
  • 类型

继续阅读»»»

印度朋友手把手教你学Scala(2):Scala里的类型推断 & 类型

/**
 * 谨献给我最爱的YoYo
 * 原文出处:https://madusudanan.com/blog/scala-tutorials-part-2-type-inference-in-scala/
 * @author dogstar.huang <chanzonghuang@gmail.com> 2017-02-25
 */

本翻译已征得Madusudanan.B.N同意,并链接在原文教程前面。

类型推断

这是关于Scala系列教程的第二章。点击这里可查看整个系列。

如果你还记得的话,在上一章,我们通过一些示例简短地讲解了推断推断。现在我们准备通过更多的示例继续进行深挖,以下是这篇文章的主要内容。

温馨提示:这是一个枯燥无味的主题,很多都是基本的理论,但也很重要。我已经努力尽可能以最简约覆盖本质的内容。此外,提供了很多材料以供业余学习。

目录

  • 从程序员的视角,到底什么是类型推断
  • 类型系统概览
  • 根据类型系统的语言分类
  • 类型推导器(HM)类型推断
  • 本地 vs 全局类型推断 -- 为什么Scala选择本地推断推断
  • Scal

继续阅读»»»