2018-11-27 中文代码示例之Programming in Scala笔记第七八章

2018-11-27 中文代码示例之Programming in Scala笔记第七八章

续前文:

同样仅节选有意思的例程部分作演示之用. 源文档仍在: program-in-chinese/Programming_in_Scala_study_notes_zh

第七章 内置控制结构

7.8中改为函数式风格的乘法表:

def 创建行序列(行: Int) =
for (列 <- 1 to 10) yield {
val 乘积 = (行 * 列).toString
val 缩进 = " " * (4 - 乘积.length)
缩进 + 乘积
} def 创建行(行: Int) = 创建行序列(行).mkString def 乘法表() = {
val 表序列 =
for (行 <- 1 to 10)
yield 创建行(行) 表序列.mkString("\n")
}

第八章 函数和闭包

8.7 闭包

在运行时, 闭包牵涉的变量值可能改变, 关键在于该闭包创建的时刻变量值如何:

scala> def 创建累加器(增量: Int) = (数: Int) => 数 + 增量
创建累加器: (增量: Int)Int => Int scala> val 累加器1 = 创建累加器(1)
累加器1: Int => Int = $$Lambda$1168/1847678962@36f59005 scala> val 累加器9999 = 创建累加器(9999)
累加器9999: Int => Int = $$Lambda$1168/1847678962@4a83d668 scala> 累加器1(10)
res25: Int = 11 scala> 累加器9999(10)
res26: Int = 10009

感觉书中例程还是偏IT, 本可以更接近日常, 比如这个:

val 首参数 = if (参数.length > 0) 参数[0] else ""

val 伙伴 =
首参数 match {
case "甜酱" => println("辣酱")
case "羊肉" => println("泡馍")
case "皮蛋" => println("豆腐")
case _ => println("啥?")
}
println(伙伴)
上一篇:【Android 应用开发】Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片(一)


下一篇:Gradle 1.12翻译——第十九章. Gradle 守护进程