快学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 }}/*result1 inch = 2.54000 centimeters2 gallons = 7.57082 liters3 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))/*result1 inch = 2.54000 centimeters2 gallons = 7.57082 liters3 miles = 4.82803 centimeters*/import java.awt._object Origin extends Point{ override def getLocation:Point = super.getLocation}Origin.move(2,3)println(Origin.toString)/*resultMain$$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)/*resultPoint 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) + " ")}*//*resultWorld 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 ...
随机推荐
- 【翻译】Nginx的HTTP负载均衡
本文为翻译文,原文地址:http://nginx.org/en/docs/http/load_balancing.html 介绍 将请求负载均衡到多个应用实例是一个常用的技术,它起到优化资源使用率.最 ...
- 【温暖】文龙回AICODER给老马送锦旗了
又是一个愉快的周末,AICODER第一批老学员文龙小伙伴.已经工作两个月,而且就业薪资12000+,文龙从之前月薪不足4000,一下子翻了三倍多的工资. 几个月的实习,让文龙掌握了大前端全栈的技术,在 ...
- Windows7系统不显示.gitignore文件名
从码云拉取项目后,发现Win7下不能显示.giignore文件名. 这是因为Win7系统默认隐藏了已知的拓展名,而.gitignore逗号前没有字符,于是显示的文件命是空白的. 打开工具—文件夹选项, ...
- mail 发送邮件
(1) 直接使用shell当编辑器 # mail -s "Hello from linuxde.net by shell" admin@linuxde.net hello,this ...
- [Java并发编程(三)] Java volatile 关键字介绍
[Java并发编程(三)] Java volatile 关键字介绍 摘要 Java volatile 关键字是用来标记 Java 变量,并表示变量 "存储于主内存中" .更准确的说 ...
- hdoj:2069
Coin Change Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- uglifyjs 合并压缩 js, clean-css 合并压缩css
本文主要介绍如何通过CLI命令行(也就是终端或者cmd打开的那个shell窗口)实现 js和 css 的合并压缩. uglifyjs 合并压缩 js: 1.安装node 这一步就不多说了,下载node ...
- tracert traceroute
二者都用于探测数据包从源到目的经过路由的IP,但两者探测的方法却有差别.不同点:一.应用环境不同tracert是应用在windows下.traceroute则是应用在linux/BSD/router/ ...
- 使用MegaCli监控Linux硬盘
1.首先查看机器是否使用的是MegaRAID卡 dmesg | grep RAID [ 6.932741] scsi host0: Avago SAS based MegaRAID driver 2. ...
- How do I use IValidatableObject? 使用IValidatableObject添加自定义属性验证
Here's how to accomplish what I was trying to do. Validatable class: public class ValidateMe : IVali ...