Scala学习(六)练习
2015-06-29 10:43
323 查看
Scala中的对象&练习 |
程序代码:
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))
}
}
运行结果:
15英尺= 457.2
15加仑= 56.78117676
15公里= 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)+"公里")
}
}
运行结果:
10英尺= 304.8 厘米
10加仑= 37.85311784 升
10公里= 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】。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
相关文章推荐
- Linux进程管理
- HBase入门篇
- W3C盒模型和IE盒模型的区别
- 什么是经验
- UEditor插入视频、图片显示问题解决
- Java OOM的种类
- 汉诺塔递归算法拙见
- Direct3D 9,Direct3D 10,Direct3D 11渲染流水线
- 2015夏令营,创优翼,与你同行。
- Kickstart+PXE自动部署CentOS6.6 推荐
- 【黑马程序员】java学习笔记之常量与变量
- Linux环境变量设置
- 让自己充满正能量的6个方法
- $ROOT/comm/amms/ammsps/com/rules.mk
- 数据库设计工具推荐
- Scala学习(六)---Scala对象
- VC++ 中ListCtrl经验总结
- IOS开发---获取用户当前地理坐标(最新)
- Android的图片,字符串,demin,color,以及Array,boolean,Integer资源的使用-android学习之旅(五十四)
- ArrayList的使用方法