续前文:
源文档库:
疑似中文命名bug
. 复现如下. 需要深究:
scala> for ((行1, 行2) <- Array(1,2) zip Array("a", "b")) | yield 行1 + 行2:12: error: not found: value 行1 for ((行1, 行2) <- Array(1,2) zip Array("a", "b")) ^ :12: error: not found: value 行2 for ((行1, 行2) <- Array(1,2) zip Array("a", "b")) ^ :13: error: not found: value 行1 yield 行1 + 行2 ^ :13: error: not found: value 行2 yield 行1 + 行2 ^scala> for ((l1, l2) <- Array(1,2) zip Array("a", "b")) | yield l1 + l2res1: Array[String] = Array(1a, 2b)
第九章 控制抽象
def 文件匹配(查询: String, 匹配器: (String, String) => Boolean) = for (文件 <- 此处文件; if 匹配器(文件.getName, 查询)) yield 文件 def 文件名结尾(查询: String) = 文件匹配(查询, _.endsWith(_)) def 文件名包括(查询: String) = 文件匹配(查询, _.contains(_)) def 文件名正则匹配(查询: String) = 文件匹配(查询, _.matches(_))
第十章 组合和继承
import 元素类.元素object 螺旋 { val 空格 = 元素(" ") val 角 = 元素("+") def 螺旋(边数: Int, 方向: Int): 元素类 = { if (边数 == 1) 元素("+") else { val 旋 = 螺旋(边数 - 1, (方向 + 3) % 4) def 竖条 = 元素('|', 1, 旋.高度) def 横条 = 元素('-', 旋.宽度, 1) if (方向 == 0) (角 在旁 横条) 在上 (旋 在旁 空格) else if (方向 == 1) (旋 在上 空格) 在旁 (角 在上 竖条) else if (方向 == 2) (空格 在旁 旋) 在上 (横条 在旁 角) else (竖条 在上 角) 在旁 (空格 在上 旋) } } def main(参数: Array[String]) = { val 边数 = 参数(0).toInt println(螺旋(边数, 0)) }}
运行效果:
$ scala 螺旋 17+----------------| | +------------+ | | | | | +--------+ | | | | | | | | | +----+ | | | | | | | | | | | | | ++ | | | | | | | | | | | | | | +--+ | | | | | | | | | | | +------+ | | | | | | | +----------+ | | | +--------------+
敬请期待后续!