快学Scala 第6章 对象 - 练习
1. 编写一个Conversions对象,加入inchesToCentimeters、gallonsToLiters和milesToKilometers方法。
object
Conversions {
def
main(args
:
Array[String]){
printf(
"1 inch = %g centimeters\n"
, inchesToCentimeters(
1
))
printf(
"2 gallons = %g liters\n"
, gallonsToLiters(
2
))
printf(
"3 miles = %g centimeters\n"
, milesToKilometers(
3
))
}
def
inchesToCentimeters(inches
:
Double)
=
{
inches *
2.54
}
def
gallonsToLiters(gallons
:
Double)
=
{
gallons *
3.7854118
}
def
milesToKilometers(miles
:
Double)
=
{
miles *
1.609344
}
}
/*result
1 inch = 2.54000 centimeters
2 gallons = 7.57082 liters
3 miles = 4.82803 centimeters
*/
abstract
class
UnitConversions{
def
convert(amt
:
Double)
:
Double
}
object
inchesToCentimeters
extends
UnitConversions{
override
def
convert(amt
:
Double)
=
amt *
2.54
}
object
gallonsToLiters
extends
UnitConversions{
override
def
convert(amt
:
Double)
=
amt *
3.7854118
}
object
milesToKilometers
extends
UnitConversions{
override
def
convert(amt
:
Double)
=
amt *
1.609344
}
printf(
"1 inch = %g centimeters\n"
, inchesToCentimeters.convert(
1
))
printf(
"2 gallons = %g liters\n"
, gallonsToLiters.convert(
2
))
printf(
"3 miles = %g centimeters\n"
, milesToKilometers.convert(
3
))
/*result
1 inch = 2.54000 centimeters
2 gallons = 7.57082 liters
3 miles = 4.82803 centimeters
*/
import
java.awt.
_
object
Origin
extends
Point{
override
def
getLocation
:
Point
=
super
.getLocation
}
Origin.move(
2
,
3
)
println(Origin.toString)
/*result
Main$$anon$1$Origin$[x=2,y=3]
*/
class
Point
private
(
val
x
:
Int,
val
y
:
Int){
override
def
toString
=
"Point at [x=%d,y=%d]"
.format(x,y)
}
object
Point{
def
apply(x
:
Int, y
:
Int)
=
new
Point(x,y)
}
val
a
=
Point(
3
,
4
)
println(a.toString)
/*result
Point at [x=3,y=4]
*/
object
Reverse{
def
main(args
:
Array[String]){
for
(i <- (
0
until args.length).reverse) print(args(i) +
" "
)
}
}
/* The following code did not work for me.
object Reverse extends App{
for(i <- (0 until args.length).reverse) print(args(i) + " ")
}
*/
/*result
World Hello
*/
object
Poker
extends
Enumeration
with
App{
val
Heart
=
Value(
3
,
"
♥"
)
val
Diamond
=
Value(
4
,
"
♦"
)
val
Club
=
Value(
5
,
"
♣"
)
val
Spade
=
Value(
6
,
"
♠"
)
println(Poker.Heart)
println(Poker.Diamond)
println(Poker.Club)
println(Poker.Spade)
}
object
Card
extends
Enumeration
with
App{
val
Heart
=
Value(
3
,
""
)
val
Diamond
=
Value(
4
,
""
)
val
Club
=
Value(
5
,
""
)
val
Spade
=
Value(
6
,
""
)
def
color(c
:
Card.Value){
if
(c
==
Card.Club || c
==
Card.Spade) print(
"Black"
)
else
print(
"Red"
)
}
color(Card.Heart)
}
/*
Red
*/
object
RGB
extends
Enumeration
with
App{
val
RED
=
Value(
0xff0000
,
"Red"
)
val
BLACk
=
Value(
0x000000
,
"Black"
)
val
GREEN
=
Value(
0x00ff00
,
"Green"
)
val
CYAN
=
Value(
0x00ffff
,
"Cyan"
)
val
YELLO
=
Value(
0xffff00
,
"Yellow"
)
val
WHITE
=
Value(
0xffffff
,
"White"
)
val
BLUE
=
Value(
0x0000ff
,
"Blue"
)
val
MAGENTA
=
Value(
0xff00ff
,
"Magenta"
)
}
快学Scala 第6章 对象 - 练习的更多相关文章
- 《快学Scala》第二章 控制结构和函数
- 《快学Scala》第一章 基础
- 快学Scala习题解答—第一章 基础
1 简介 近期对Scala比较感兴趣,买了本<快学Scala>,感觉不错.比<Programming Scala:Tackle Multi-Core Complexity on th ...
- 《快学Scala》
Robert Peng's Blog - https://mr-dai.github.io/ <快学Scala>Intro与第1章 - https://mr-dai.github.io/S ...
- 快学Scala 第十九课 (trait的abstract override使用)
trait的abstract override使用: 当我看到abstract override介绍的时候也是一脸懵逼,因为快学scala,只介绍了因为TimestampLogger中调用的super ...
- 快学Scala 第十三课 (类型层级,对象相等性)
Scala 类型层级: 对象相等性: 和Java一样要重写equals方法和hashcode方法 class Student(val id: Int, val name: String) { over ...
- 《快学Scala》第六章 对象 第七章 包和引入
- 快学Scala习题解答—第四章 映射和元组
4 映射和元组 4.1 设置一个映射,当中包括你想要的一些装备,以及它们的价格.然后构建还有一个映射.採用同一组键,可是价格上打9折 映射的简单操作 ,"gun"->18 ...
- 快学scala习题解答--第五章 类
5 类 5.1 改进5.1节的Counter类,让它不要在Int.MaxValue时变成负数 class Count{ private var value = Int.MaxValue else v ...
随机推荐
- oracle表查询优化
ORACLE有个高速缓冲的概念,这个高速缓冲就是存放执行过的SQL语句,那oracle在执行sql语句的时候要做很多工作,例如解析sql语句,估算索引利用率,绑定变量,读取数据块等等这些操作.假设高速 ...
- Spark基础
1 读取本地文件 ./spark-shell scala> val textFile=sc.textFile("file:///home/hadoop/wordfile1.txt&qu ...
- 02Hadoop二次排序2
案例: 数据: 邮编 | 日期 |金额 ILMN,2013-12-05,97.65GOOD,2013-12-09,1078.14IBM,2013-12-09,177.46ILMN, ...
- WebSphere MQ中的CCSID
CCSID是一个字符集的标识.作为unicode标准通过定义一个字符集内每个字符要对应那个数字值的方式定义了一个字符集.这说明CCSID就是一个定义字符集顺序的标识数码罢了.IBM的字符标识架构在文档 ...
- Linux 依据关键字查找正在运行的进程
ps aux |grep tm1s
- BCP文件导入SQLServer数据库遇到的问题
1. BCP文件插入sql server数据库,未指定数据库字段类型情况下,需要每个字段单独指定字段长度 2.文件中的存储值得类型 3.设置最大的类型
- PHP 数组转XML 格式
function buildXml( $data, $wrap= 'xml' ){ $str = "<{$wrap}>"; if( is_array( $data ) ...
- 第二篇 Linux 虚拟机操作
下一个虚拟机 Oracle VM 新建一个 空间啥都给大点, 然后下一个Ubuntu镜像 然后打开 试用 try 然后进入后安装就可以用Linux 啦 发现Linux还是看着蛮牛逼,单纯的用于编程 ...
- mysql获取相隔时间段的数据
思路:为时间段内的数据进行编序号,然后计算好相隔时间,拿到id作为搜索条件 SELECT * FROM ( SELECT (@i:=@i+1) as i, id, data_send_time FRO ...
- poj 1556
哦天哪这个萨比提又浪费了我好几个小时. 我们在check的时候只考虑严格相交就行了,想了很久才注意到这一点. 然后就建图跑最短路,over. #include <cstdio> #incl ...