- 浏览: 387082 次
- 性别:
- 来自: 南京
最新评论
-
793059909:
scala> def count(x:Double,n: ...
快学Scala习题解答—第二章 控制结构和函数 -
793059909:
scala> def countdown(n:Int){ ...
快学Scala习题解答—第二章 控制结构和函数 -
daquan198163:
可是奇慢无比啊,切换个页签得等一分钟啊!!!!!!!!
误会ZK Studio了!Sorry,Sorry! -
rmn190:
受教了, 今天我第一天遇到这个问题, 以前没想到fmt标签还跟 ...
JSP中的国际化(转) -
suu:
都是栈里的拷贝 这句话让我从一头雾水到豁然开朗 谢谢了.
争论话题:Java传值还是传引用?
文章列表
反正ItEye都被CSDN收购了,富文本又难用到死,干脆直接迁到CSDN吧~虽然现在只在http://ivaneye.com更新了~
开通了微信公众账号,欢迎大家关注: PigCode
不定期推送博客文章,及编程相关内容.方便手机阅读.
1. n (最新文章)2. r (随机文章)3. h (热门文章)4. help(帮助信息)5. 其它字符进行关键字搜索.推荐关键字(Java,Clojure,Luminus,Scala,Tomcat,设计模式,Maven,Vim,Emacs)
Lambda表达式(闭包)在很多现代化的编程语言中很常见。在Java平台上引入lambda表达式的一个最主要原因是方便多线程的处理集合。目前,对于list和set等集合类典型的操作方式是使用迭代器。如果需要并行的处理集合,需要编写客户端代码来处理,而不是集合本身处理。
在Java8中,引入闭包的目的就是为了给集合提供函数式的方法,方便处理。这样所带来的好处是,集合能够自己组织他们的元素,而不需要客户端代码来处理。但是,为了使得客户端代码能够使用这一改进,必须给集合添加函数式方法。当前通用的做法是使用匿名类。但是声明匿名类带来了过多的标准化代码。
举例来说,forEach方法接受一个Cons ...
在一般数学计算中,lambda表达式就是函数:根据部分或所有输入的组合,返回相应的值。lambda表达式作为函数式思想被引入到了Java中。熟悉Java语法的朋友可以把lambda表达式看做是可以接受参数,返回类型,不可修改的,语法简洁的匿名方法。
语法:
(parameters) -> expression或者
10 文件和正则表达式
10.1 编写一小段Scala代码,将某个文件中的行倒转顺序(将最后一行作为第一行,依此类推)
import io.Source
import java.io.PrintWriter
val path = "test.txt"
val reader = Source.fromFile(path).getLines()
val result = reader.toArray.reverse
val pw = new PrintWriter(path)
result.foreach(line => pw.write( ...
快学Scala习题解答—第八章 继承
- 博客分类:
- Scala
9 继承
9.1 扩展如下的BankAccount类,新类CheckingAccount对每次存款和取款都收取1美元的手续费class BankAccount(initialBalance:Double){
private var balance = initialBalance
def deposit(amount:Double) = { balance += amount; balance}
def withdraw(amount:Double) = {balance -= amount; balance}
}
继承语法的使用。代码如下
class CheckingA ...
8 包和引入
8.1 编写示例程序,展示为什么
package com.horstmann.impatient
不同于
package com
package horstmann
package impatient
分别使用package的效果如下
package com {
class T1() {}
package horstmann {
class T2(t: T1) {}
package impatient {
class T3(t1: T1, t2: T2) {}
}
}
}
子包里的类可以使用父包里的类。但是第 ...
单例模式在Scala中就是一个默认实现的模式。 对于Java中的单例模式,请看http://www.ivanpig.com/blog/?p=75。 虽然从代码上看,单例模式很简单。但是涉及到多线程问题,问题会很复杂。 Scala中完全不用担心这个问题。
object Single{
def say(){
println("Hello")
}
def main(args : Array[String]){
Single.say()
Single.say()
}
}
搞定。乍一看 ...
7 对象
7.1 编写一个Conversions对象,加入inchesToCentimeters,gallonsToLiters和milesToKilometers方法
object Conversions{
def inchesToCentimeters(){}
def gallonsToLiters(){}
def milesToKilometers(){}
}
7.2 前一个练习不是很面向对象。提供一个通用的超类UnitConversion并定义扩展该超类的InchesToCentimeters,GallonsToLiters和MilesToKilome ...
6 类
6.1 改进5.1节的Counter类,让它不要在Int.MaxValue时变成负数
加个判断就OK了
class Count{
private var value = Int.MaxValue
def increment(){if(value < Int.MaxValue) value + 1 else value }
def current = value
}
6.2 编写一个BankAccount类,加入deposit和withdraw方法,和一个只读的balance属性
class BankAccount(val balance:Int = 0){
...
5 映射和元组
5.1 设置一个映射,其中包含你想要的一些装备,以及它们的价格。然后构建另一个映射,采用同一组键,但是价格上打9折
映射的简单操作
scala> val map = Map("book"->10,"gun"->18,"ipad"->1000)
map: scala.collection.immutable.Map[java.lang.String,Int] = Map(book -> 10, gun -> 18, ipad -> 1000)
scala> fo ...
4 数组相关操作
4.1 编写一段代码,将a设置为一个n个随机整数的数组,要求随机数介于0(包含)和n(不包含)之间
random和yield的使用
import scala.math.random
def randomArray(n:Int)={
for(i <- 0 until n) yield (random * n).toInt
}
println(randomArray(10 ...
3 控制结构和函数
3.1 一个数字如果为正数,则它的signum为1;如果是负数,则signum为-1;如果为0,则signum为0.编写一个函数来计算这个值
简单的逻辑判断
def signum(num:Int){if(num>0)print(1)else if(num<0)print(-1)else print(0)}
Scala中已经有此方法了,刚才查找API的时候,应该能看到
BigInt(10).signum
3.2 一个空的块表达式{}的值是什么?类型是什么?
在REPL中就能看出来了
scala> val t = {}
t: Unit = () ...
1 简介
近期对Scala比较感兴趣,买了本《快学Scala》,感觉不错。比《Programming Scala:Tackle Multi-Core Complexity on the Java Virtual Machine》好很多。 是本不错的入门书。而且每个章节都设置了难度级别,每章有习题,可以巩固Scala语法。
本文的目的就是针对这些习题进行解答
2 基础
2.1 在Scala REPL中键入3,然后按Tab键。有哪些方法可以被应用?
这个。。。。直接操作一遍就有结果了.此题不知是翻译的问题,还是原题的问题,在Scala REPL中需要按3. 然后按Tab才会提示。 直接按3加Ta ...
Ubuntu10.04下使用apt-get安装ruby on rails ,不本以为挺简单的,还是遇到了一些问题。
使用如下命令安装ruby1.9.1
sudo apt-get install ruby1.9.1-full
问题一:
安装完后输入
ruby -v,理论上会显示ruby的版本,不过显示的却是ruby未安装。
解决办法:
/usr/bin/目录下是ruby1.9.1而不是ruby,如果使用ruby1.9.1 -v就显示ruby的版本号了。
或者使用sudo cp /usr/bin/ruby1.9.1 /usr/bin/ruby就可以使用ruby -v命令 ...