Scala学习(六)练习
|
Scala中的对象&练习 |
1. 编写一个Conversions对象,加入inchesToCentimeters,gallonsToLiters和milesToKilometers方法
程序代码:
- object Conversions {
- private val i2c=30.48
- private val g2l=3.785411784
- private val m2k=1.609344
- def inchesToCentimeters(inch:Double):Double={
- inch*i2c
- }
- def gallonsToLiters(gallon:Double):Double={
- gallon*g2l
- }
- def milesTokilometers(mile:Double):Double={
- mile*m2k
- }
- def main(args: Array[String]): Unit = {
- val inch=15
- val gallon=15
- val mile=15
- println(inch+"英尺= "+inchesToCentimeters(inch))
- println(gallon+"加仑= "+gallonsToLiters(gallon))
- println(mile+"公里= "+milesTokilometers(mile))
- }
- }
运行结果:
英尺= 457.2
加仑= 56.78117676
公里= 24.14016
2. 前一个练习不是很面向对象。提供一个通用的超类UnitConversion并定义扩展该超类的InchesToCentimeters,GallonsToLiters和MilesToKilometers对象
程序代码:
- abstract class UnitConversion {
- def Converse(from:Double):Double
- }
- object inchesToCentimeters extends UnitConversion{
- private val i2c=30.48
- override def Converse(inche:Double):Double={
- inche*i2c
- }
- }
- object gallonsToLiters extends UnitConversion{
- private val g2l=3.785311784
- override def Converse(gallon:Double):Double={
- g2l*gallon
- }
- }
- object milesToKilometers extends UnitConversion{
- private val m2k=1.609344
- override def Converse(mile:Double):Double={
- m2k*mile
- }
- }
- object Test{
- def main(args: Array[String]): Unit = {
- val inche=10; val gallon=10; val mile=10
- println(inche+"英尺= "+inchesToCentimeters.Converse(inche)+"厘米")
- println(gallon+"加仑= "+gallonsToLiters.Converse(gallon)+"升")
- println(mile+"公里= "+milesToKilometers.Converse(mile)+"公里")
- }
- }
运行结果:
英尺= 304.8 厘米
加仑= 37.85311784 升
公里= 16.09344 公里
3. 定义一个扩展自java.awt.Point的Origin对象。为什么说这实际上不是个好主意 (仔细看Point类的方法)
描述:Point中的getLocation方法返回的是Point对象,如果想返回Origin对象,需要Origin类才行。Point有move方法,setLocation方法。这些作为Origin(原 点) 来说,都不是很合适
程序代码:
import java.awt.Point
object Origin extends Point with App{
override def getLocation:Point=super.getLocation()
Origin.move(2, 3)
println(Origin.toString())
}
4. 定义一个Point类和一个伴生对象,使得我们可以不用new而直接用Point(3,4)来构造Point实例
描述:apply方法使用
程序代码:
class Point(x:Int,y:Int) {
override def toString():String="x= "+x+" y= "+y
}
object Point extends App{
def apply(x:Int,y:Int)={
new Point(x,y)
}
val p=new Point(3,4)
println(p)
}
运行结果:
x= 3 y= 4
5. 编写一个Scala应用程序,使用App特质,以反序打印命令行参数,用空格隔开。举例来说,scala Reverse Hello World应该打印World Hello
程序代码:
object Reverse extends App{
for(str <- args.reverse)
println(str+" ")
}
运行结果:

6. 编写一个扑克牌4种花色的枚举,让其toString方法分别返回♣,♦,♥,♠
描述:这四个花色的符号win下选输入法的特殊符号软键盘。在lin下可以用vim。在vim中输入:dig可以找到分别对应cS,cH,cD,cC。进入vim插入模式按<CTRL-K>,然后分别输入即可
程序代码:
object PokerFace extends Enumeration {
type PokerFace=Value
val SPADES=Value("♠")
val HEARTS=Value("♥")
val DIAMONDS=Value("♢")
val CLUBS=Value("♧")
def main(args: Array[String]): Unit = {
for(poker <- PokerFace.values)
println(poker)
}
}
运行结果:
♠
♥
♢
♧
7. 实现一个函数,检查某张牌的花色是否为红色
程序代码:
- object Card extends Enumeration with App{
- val SPADES=Value("?")
- val HEARTS=Value("?")
- val DIAMONDS=Value("?")
- val CLUBS=Value("?")
- type Card=Value
- def color(c:Card)={
- if(c==Card.HEARTS||c==Card.DIAMONDS)
- println("Red")
- else
- println("Black")
- }
- color(SPADES)
- color(DIAMONDS)
- }
运行结果:
Black
Red
8. 编写一个枚举,描述RGB立方体的8个角。ID使用颜色值(例如:红色是0xff0000)
描述:RGB如果分别用8位表示,红是0xff0000,绿是0x00ff00,蓝是0x0000ff。以此类推 ,8个顶点分别是(0,0,0) (0,0,1) (0,1,0) (0,1,1) (1,0,0) (1,0,1) (1,1,0) (1,1,1)
程序代码:
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 YELLOW = Value(0xffff00,"Yellow")
val WHITE = Value(0xffffff,"White")
val BLUE = Value(0x0000ff,"Blue")
val MAGENTA = Value(0xff00ff,"Magenta")
}
如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【Sunddenly】。本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Scala学习(六)练习的更多相关文章
- Scala学习六——对象
一.本章要点 用对象作为但例或存放工具的方法 类可以拥有一个同名的伴生对象 对象可以扩展类或特质 对象的apply方法通常用来构造伴生类的新实例 如果不想显示定义main方法,可以扩展App特质的对象 ...
- Scala学习(六)---Scala对象
Scala中的对象 摘要: 在本篇中,你将会学到何时使用Scala的object语法结构.在你需要某个类的单个实例时,或者想为其他值或函数找一个可以挂靠的地方时,你就会用到它.本篇的要点包括: 1. ...
- 【Scala】Scala学习资料
Scala学习资料 java 树形 分类器_百度搜索 决策树分类器-Java实现 - CSDN博客 KNN分类器-Java实现 - CSDN博客 学习:java设计模式—分类 - 飞翔荷兰人 - 博客 ...
- Scala学习资源
Scala学习资源: Scala官方网站:http://www.scala-lang.org/ Scala github:https://github.com/scala/scala Twitter ...
- 【Todo】【读书笔记】大数据Spark企业级实战版 & Scala学习
下了这本<大数据Spark企业级实战版>, 另外还有一本<Spark大数据处理:技术.应用与性能优化(全)> 先看前一篇. 根据书里的前言里面,对于阅读顺序的建议.先看最后的S ...
- Hbase深入学习(六) Java操作HBase
Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...
- TweenMax动画库学习(六)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) Tw ...
- 机器学习(三)--- scala学习笔记
Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Spark是UC Berkeley AMP lab所开源的类Had ...
- SVG 学习<六> SVG的transform
目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...
随机推荐
- (网页)Java程序员们最常犯的10个错误(转)
转自CSDN: 1.将数组转化为列表 将数组转化为一个列表时,程序员们经常这样做: List<String> list = Arrays.asList(arr); Arrays.asLis ...
- Linux vsftd配置文件
vi /etc/vsftpd.conf listen=YES userlist_deny=NO userlist_enable=YES anonymous_enable=YES local_enabl ...
- 11-OpenLDAP主从同步
OpenLDAP主从同步 阅读视图 部署环境 OpenLDAP服务器初始化 配置主服务器同步策略 配置从服务器 OpenLDAP主从同步验证 故障诊断 1. 部署环境 本文以两台服务器为蓝本演示其同步 ...
- httpd服务器的真实ip获取难题
web服务器httpd中想要获取真正的ip是个难度,我们先要在配置文件中定义错误日志的格式:如下所示: 然后获取ip 上面三条输出日志中,第一条是直接访问http://172.16.213.157/i ...
- MySQL 1130 - Host 127.0.0.1 is not allowed to connect to this MySQL server
在开发中为了让开发更方便,在本地配置环境,希望可以直接访问服务器上的MySQL数据库,更方便的管理数据库, 需要在本地远程连接linux服务器的本地数据库,直接用数据库管理工具连接出现如下报错1130 ...
- Alpha冲刺博客汇总(麻瓜制造者)
目录 Alpha冲刺报告 Github项目地址 测试报告与用户反馈博客地址 课程展示博客地址 事后诸葛亮 Alpha冲刺报告 Alpha冲刺报告(1/12)(麻瓜制造者) Alpha冲刺报告(2/12 ...
- 【软件工程1916|W(福州大学)_助教博客】团队第四次作业(第7次)成绩公示
1. 作业链接: https://edu.cnblogs.com/campus/fzu/SoftwareEngineering1916W/homework/2874 2. 评分准则: 本次作业评分分为 ...
- 关于HashMap自定义key重写hashCode和equals的问题
使用HashMap,如果key是自定义的类,就必须重写hashcode()和equals() hashcode()和equals()都继承于object,在Object类中的定义为: equals( ...
- 自己定义控件-DragButton
版权声明:本文为博主原创文章.欢迎转载,转载请注明博主和原文链接. https://blog.csdn.net/u014077888/article/details/28097273 一.描写叙述 可 ...
- 用户输入序号选择商品,按q退出
输出商品列表,用户输入序号,显示用户选中的商品 li = ['手机','电脑','鼠标垫','游艇'] while 1: li = ['手机','电脑','鼠标垫','游艇'] for i in li ...