中文编程
首发于中文编程
中文代码示例之Programming in Scala笔记第七八章

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

续前文: 中文代码示例之Programming in Scala学习笔记第二三章

中文代码示例之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(伙伴)

编辑于 2018-11-27

文章被以下专栏收录

    在所有编程语言和领域中尝试编写中文代码,开发相关工具,总结经验,一致代码风格。包括中文命名,汉化现有语言,创造中文语法的编程语言等等。作为最熟悉的母语,用来编写代码会让代码更容易被自己和母语相同的其他开发者理解。基于英文的编程语言和框架中,使用中文命名有时有技术问题。希望这里为后人趟雷,填坑。多数现有API是英文的,这里也会对其中一些常用的进行汉化。当然,这里也会对基于中文的编程语言进行探讨。包括汉化基于英文的编程语言,以及创造新的编程语言。