函数组合 让我们创建两个函数: def f(s: String) = "f(" + s + ")" def g(s: String) = "g(" + s + ")" compose compose 组合其他函数形成一个新的函数 f(g(x)) val fComposeG = f _ compose g _ fComposeG("yay") // f(g(yay)) andThen andThen 和 co…
映射和元组 摘要: 一个经典的程序员名言是:"如果只能有一种数据结构,那就用哈希表吧".哈希表或者更笼统地说映射,是最灵活多变的数据结构之一.映射是键/值对偶的集合.Scala有一个通用的叫法:元组,即n个对象的聚集,并不一定要相同类型的.对偶不过是一个 n=2的元组,元组对于那种需要将两个或更多值聚集在一起时特别有用.本篇的要点包括: 01. Scala有十分易用的语法来创建.查询和遍历映射. 02. 你需要从可变的和不可变的映射中做出选择. 03. 默认情况下,你得到的是一个哈希映射,不过你…
控制结构和函数 摘要: 本篇主要学习在Scala中使用条件表达式.循环和函数,你会看到Scala和其他编程语言之间一个根本性的差异.在Java或C++中,我们把表达式(比如3+4)和语句(比如if语句)看做两样不同的东西.表达式有值,而语句执行动作.在Scala中,几乎所有构造出来的语法结构都有值.这个特性使得程序更加精简,也更易读.本篇的要点包括: 1. 表达式有值 2. 块也有值,是它最后一个表达式的值 3. Scala的for循环就像是"增强版"的Java for循环 4. 分号…
一.本章要点 Scala有十分易用的语言来创建,查询和遍历映射 你需要从可变和不可变的映射中做出选择 默认情况下,你得到的是一个哈希映射,不过你也可以指明要树形映射 你可以很容易地在Scala映射和Java映射之间来回切换 元祖可以用来聚集值 二.构造映射(哈希表) 构造不可变映射: val scores=Map("Alice"->100,"Bob"->3,"Cindy"->8) 构造可变映射: val scores=scala…
一.if表达式有值 val s=if(x>0) 1 else -1,相当于Java中x>0?1:-1(不过不拿呢个在?:中插入语句),而且Scala中可以用混合类型(如if (x>0) "Hello" else -1). 注:像 if(x>0) 1这样if语句可能没有输出值,但是在Scala中每个表达式都有值(此时是引入了一个Unit类,写做()[表示“无有用值”的占位符]. REPL中想换行用{},想粘贴输入paste进入粘贴模式,然后Ctrl+D退出. 二.…
函数是Scala的第一公民! 1  基本定义 scala> def max(x: Int, y: Int): Int = { if (x > y) x else y } 跟着是括号里带有冒号分隔的参数列表. 每个函数参数后面必须带前缀冒号的类型标注,因为Scala编译器(还有解释器,但之后我 们将只说编译器)没办法推断函数参数类型. 在max参数列表的括号之后你会看到另一个“: Int”类型标注.这个东西定义了max函数的结果类型:result type(通常可以省略,因为可以推断).跟在函数…
定义一个函数: scala> def foo(x:Int)=x*2 foo: (x: Int)Int 可以采用匿名参数: scala> def foo:((Int)=>Int) = _*2 foo: Int => Int 这个函数的类型是Int=>Int: scala> var bar = foo _ bar: Int => Int = <function1> scala> var bar:(Int)=>Int = foo bar: Int…
映射和元组&练习 1. 设置一个映射,其中包含你想要的一些装备,以及它们的价格.然后构建另一个映射,采用同一组键,但在价格上打9折 映射代码如下: object HelloScala{ def main(args: Array[String]): Unit = { val map=Map("Computer"->3000,"Iphone"->2000,"Cup"->10) val fold=for((k,v)<-m…
以下主要记录的是看完scala in programming这本书functions and closures(第八章)后的要点总结. 1,函数可以存在的地方:函数方法,嵌套函数. 2,关于function literal和function value的区别,类似于java中class和object的区别. 3,关于"_"符号的作用(目前已知的两种用法): a,用在match的case中表示其他情况. b,参数的占位符 4,闭包的基本用法,函数定义可以带外部变量. 5,函数调用的形式:…
1.switch java代码 switch (cause) { case ‘2‘ : dropTime=time; case ‘8’:case ‘9’ : case ‘10’:case ‘11’ : p_X++; break; default: break; } scala var tag=...tag match { case ‘a’ => //todo case 'b'=> //todo2 case _ if(tag eq "c" or tag eq "d&…