2018-11-16 中文代码示例之Programming in Scala笔记第四五六章
续前文: 中文代码示例之Programming in Scala学习笔记第二三章. 同样仅节选有意思的例程部分作演示之用. 源文档仍在: program-in-chinese/Programming_in_Scala_study_notes_zh
第六章 功能对象
此章的例子与之前的初步尝试将传统学科的内容程序/数据化有些共鸣, 以后的数学知识部分可以参考此实现.
class 有理数(分子: Int, 分母: Int) {
require(分母 != 0)
private val 公约数 = 最大公约数(分子.abs, 分母.abs)
val 分子值: Int = 分子 / 公约数
val 分母值: Int = 分母 / 公约数
def this(数: Int) = this(数, 1)
def + (数: 有理数): 有理数 =
new 有理数(
分子值 * 数.分母值 + 数.分子值 * 分母值,
分母值 * 数.分母值
)
def + (数: Int): 有理数 =
new 有理数(分子值 + 数 * 分母值, 分母值)
def - (数: 有理数): 有理数 =
new 有理数(
分子值 * 数.分母值 - 数.分子值 * 分母值,
分母值 * 数.分母值
)
def - (数: Int): 有理数 =
new 有理数(分子值 - 数 * 分母值, 分母值)
def * (数: 有理数): 有理数 =
new 有理数(分子值 * 数.分子值, 分母值 * 数.分母值)
def * (数: Int): 有理数 =
new 有理数(分子值 * 数, 分母值)
def / (数: 有理数): 有理数 =
new 有理数(分子值 * 数.分母值, 分母值 * 数.分子值)
def / (数: Int): 有理数 =
new 有理数(分子值, 分母值 * 数)
override def toString = 分子值 + "/" + 分母值
private def 最大公约数(甲: Int, 乙: Int): Int =
if (乙 == 0) 甲 else 最大公约数(乙, 甲 % 乙)
}
第四章 类和对象
// 在文件"校验累加器.scala"中
import scala.collection.mutable
object 校验累加器 {
private val 缓存 = mutable.Map.empty[String, Int]
def 计算(文本: String): Int =
if (缓存.contains(文本))
缓存(文本)
else {
val 累加器 = new 校验累加器
for (字符 <- 文本)
累加器.加(字符.toByte)
val 校验码 = 累加器.校验()
缓存 += (文本 -> 校验码)
校验码
}
}
2018-11-16 中文代码示例之Programming in Scala笔记第四五六章的更多相关文章
- 2018-11-27 中文代码示例之Programming in Scala笔记第七八章
续前文: 中文代码示例之Programming in Scala学习笔记第二三章 中文代码示例之Programming in Scala笔记第四五六章. 同样仅节选有意思的例程部分作演示之用. 源文档 ...
- 2018-12-09 疑似bug_中文代码示例之Programming in Scala笔记第九十章
续前文: 中文代码示例之Programming in Scala笔记第七八章 源文档库: program-in-chinese/Programming_in_Scala_study_notes_zh ...
- 2018-11-13 中文代码示例之Programming in Scala学习笔记第二三章
由于拷贝后文档格式有变, 仅摘几段如下. 完整而且代码带语法高亮的源版在: program-in-chinese/Programming_in_Scala_study_notes_zh 前言: 本书已 ...
- Programming In Scala笔记-第十六章、Scala中的List
本章主要分析Scala中List的用法,List上可进行的操作,以及需要注意的地方. 一.List字面量 首先看几个List的示例. val fruit = List("apples&quo ...
- Programming In Scala笔记-第十五章、Case Classes和模式匹配
本章主要分析case classes和模式匹配(pattern matching). 一.简单例子 接下来首先以一个包含case classes和模式匹配的例子来展开本章内容. 下面的例子中将模拟实现 ...
- Programming In Scala笔记-第二、三章
本系列博客以<Programming in Scala 2nd Edition>为主,围绕其中的代码片段进行学习和分析. 本文主要梳理Chapter2和Chapter3中涉及到的主要概念. ...
- Programming In Scala笔记-第十九章、类型参数,协变逆变,上界下界
本章主要讲Scala中的类型参数化.本章主要分成三个部分,第一部分实现一个函数式队列的数据结构,第二部分实现该结构的内部细节,最后一个部分解释其中的关键知识点.接下来的实例中将该函数式队列命名为Que ...
- 中文代码示例之Angular入门教程尝试
原址: https://zhuanlan.zhihu.com/p/30853705 原文: 中文代码示例教程之Angular尝试 为了检验中文命名在Angular中的支持程度, 把Angular官方入 ...
- 中文代码示例之Vuejs入门教程(一)
原址: https://zhuanlan.zhihu.com/p/30917346 为了检验中文命名在主流框架中的支持程度, 在vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 所有演示 ...
随机推荐
- 微信小程序web-view实例
微信小程序web-view实例 index.js //index.js //获取应用实例 const app = getApp() Page({ /** * 页面的初始数据 */ data: { }, ...
- 第50节:Java的当中的泛型
Java当中的泛型 01 import java.util.ArrayList; import java.util.List; public class Demo{ public static voi ...
- hover样式失效的解决方法
提到 css 的hover 选择器,想必大家都不陌生(:hover 用于设置鼠标指向某元素上后显示的样式) 除了常用的 hover 选择器,还有3个可以和它搭配使用的选择器: :link 设置 ...
- 史上最全阿里 Java 面试题总结
以下为大家整理了阿里巴巴史上最全的 Java 面试题,涉及大量 Java 面试知识点和相关试题. JAVA基础 JAVA中的几种基本数据类型是什么,各自占用多少字节. String类能被继承吗,为什么 ...
- NotSupportedError Only secure origins are allowed
今天在写H5调用手机摄像头时提示一个错误信息如下: NotSupportedError Only secure origins are allowed (see: https://goo.gl/Y0Z ...
- 【Java提高】---通过UUID、SHA-1、Base64组合加密
通过UUID.SHA-1.Base64组合加密 该篇文章实现的最终效果是: 1)加密是不可逆的. 2)相同字符串加密产生后的字符串都不一样 3)所以要想比较两个字符串是否相等,需要用已经加过密的字符串 ...
- 使用GOOGLE COLAB训练深度学习模型
使用 谷歌提供了免费的K80的GPU用于训练深度学习的模型.而且最赞的是以notebook的形式提供,完全可以做到开箱即用.你可以从Google driver处打开.或者这里 默认创建的是没有GPU的 ...
- InnoDB多版本
InnoDB是一个多版本的存储引擎:为了支持事务的一些特性诸如并发和回滚,它保持着被修改行的旧版本信息.这些信息被存储在一个被叫做“回滚段”的表空间中(跟Oracle中的回滚段类似).InnoDB在回 ...
- python练习一—文本转化渲染为html
想学习python已经很久了,以前使用ArcGIS的时候学习过一些简单的python语法,用来进行一些简单的GIS数据处理,但是后来并没有用到工作中也就荒废了,后来断断续续看过一些,最近想学习一门新的 ...
- Tomcat8源码笔记(六)连接器Connector分析
根据 Tomcat8源码笔记(五)组件Container分析 前文分析,StandardService的初始化重心由 StandardEngine转移到了Connector的初始化,本篇记录下Conn ...