SCALA常规练习C

package com.hengheng.scala

abstract class Animal {
  def walk(speed : Int)

  def breathe() = {
    println("Aninamal breathes.")
  }
}
trait Flyable {
  def hasFeather = true
  def fly
}
trait Swimable {
  def swim
}
class FishEagle extends Animal with Flyable with Swimable {
  def walk(speed : Int) = print("fish eagle walk with speed" + speed)
  def swim() = println("fish eagle swim fast")
  def fly() = println("fish eagle fly fast")
}
object Application{
  def main(args : Array[String]) {

  var fishEagle = new FishEagle

  var flyable : Flyable = fishEagle
  flyable.fly

  var swimmer : Swimable = fishEagle
  swimmer.swim
  var myArray : Array[String] = new Array[String](10)
  for(i <- 0 until myArray.length) {
    myArray(i) = "value is :" + i
  }
  for(value : String <- myArray) {
    println(value)
  }
  var myVar = "theValue"
  myVar match {
    case "somevalue" => println(myVar + "1")
    case "thisvalue" => println(myVar + "2")
    case "theValue" => println(myVar + "3")
    case "doublevalue" => println(myVar + "4")
  }

  def throwsException() {
    throw new IllegalStateException("Exception thrown")
  }
  try {
    throwsException();
  } catch {
    case e : IllegalStateException => println("illegal state exception.")
  } finally {
    println("This code is always executed.")
  }
 }
}

  输出:

fish eagle fly fast
fish eagle swim fast
value is :0
value is :1
value is :2
value is :3
value is :4
value is :5
value is :6
value is :7
value is :8
value is :9
theValue3
illegal state exception.
This code is always executed.

时间: 2024-10-01 21:44:27

SCALA常规练习C的相关文章

SCALA常规练习A

package com.hengheng.scala import scala.util.control.Breaks._ import scala.util.Random object Application{ def main(args : Array[String]) { println("Hello, World!") println(addSayHelloFirst(5, 10)) val I = List(1, 2, 3) I.map((i) => { println

SCALA常规练习B

package com.hengheng.scala class Point(val x : Int, val y : Int) { val isOriginal : Boolean = { x == 0 && y == 0 } } class TalkPoint(x : Int, y : Int) extends Point(x, y) { def talk() = { println("My position is (" + x + "," +

【Scala】Scala之Classes and Properties

一.前言 前面学习了控制结构,下面学习Scala的Class和Properties. 二.Class&Properties 尽管Scala和Java很类似,但是对类的定义.类构造函数.字段可见性控制等则不相同,Java更为冗长,Scala精炼.本章将通过Scala的构造函数工作原理来理解Scala的类和字段,当申明类构造函数参数和使用var.val.private关键字来修饰类的字段时,Scala编译器将会为你生成代码,根据字段修饰符不同,Scala编译器会生成不同的存取函数,本章也会展示如何重

scala学习笔记2

一.算术和操作符重载 a + b 是如下方法的简写: a.+(b) 在scala中你可以使用任何符号来为方法命名.比如BigInt类就定义了一个/%的方法,该方法返回一个对偶,对偶的内容是除法操作得到的商和余数. 通常来说,你可以用 a 方法 b 作为以下代码的简写 a.方法(b) 这里的方法是一个带有两个参数的方法(一个隐式的和一个显示的).例如1.to(10)可以简写成1 to 10 scala语言并没有提供++和--操作符,我们需要使用+=1和-=1 scala认为Int类是不可变的. 对

[翻译]The Neophyte&#39;s Guide to Scala Part 12: Type Classes

The Neophyte's Guide to Scala Part 12: Type Classes 过去的两周我们讨论了一些使我们保持DRY和灵活性的函数式编程技术,特别是函数组合,partial function的应用,以及currying.接下来,我将会继续讨论如何使你的代码尽可能的灵活. 但是,这次我们将不会讨论怎么使用函数作为一等对象来达到这个目的,而是使用类型系统,这次它不是阻碍着我们,而是使得我们的代码更灵活:你将会学到关于 type classes 的知识. 你可能会觉得这是一

scala学习笔记1

一.REPL scala解释器读到一个表达式,对它进行求值,将它的打印出来,接着再继续读下一个表达式.这个过程被称作 读取-打印-循环,即REPL. 从技术上讲,scala程序并不是一个解释器.实际发生的是,你输入的内容被快速的编译成字节码,然后这段字节码交由java虚拟机执行.正因如此,大多数scala程序员更倾向将它称作REPL. 二.声明值 2.1val定义的值实际上是一个常量,你无法改变它的内容. scala> val result = 8*2 result: Int = 16 scal

scala语言与java的区别 (1)

scala支持关联映射,如可以用(key -> value)表示一个键值对 scala中的所有类型都是对象,包括基本数据类型 scala中的case语句用来判断接收的消息,比java中的switch...case...更专注 receive{    case msg => action()    } scala行动类实现了线程之上的并发抽象,通过发送消息相互通信,每个行动类都自动维护一个消息队列,并且实现发送消息和接收消息的基本操作. receriver ! msg scala是静态类型的,也

scala函数进阶篇

1.求值策略scala里有两种求值策略Call By Value -先对函数实参求值,在函数体中用这个求出的参数值.Call By Name -先不对函数实参求值,而是函数实参每次在函数体内被用到时都会求值.scala通常使用Call By Value 如果函数形参类型以 =>开头,那么就是在使用Call By Namedef foo(x : Int)= x         //Call By Valuedef foo(x : => Int)= x   //Call By Name def l

DT梦工厂 第25课 Scala中curring实战详解

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2土豆:http://www.tudou.com/programs/view/dHz5JKJxurM/优酷:http://v.youku.com/v_show/id_