注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

阿弥陀佛

街树飘影未见尘 潭月潜水了无声 般若观照心空静...

 
 
 

日志

 
 
关于我

一直从事气象预报、服务建模实践应用。 注重气象物理场、实况场、地理信息、本体知识库、分布式气象内容管理系统建立。 对Barnes客观分析, 小波,计算神经网络、信任传播、贝叶斯推理、专家系统、网络本体语言有一定体会。 一直使用Java、Delphi、Prolog、SQL编程。

网易考拉推荐

scala case 类  

2013-07-11 10:07:36|  分类: Scala |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
实例(case) 类(class)和case对象(object)的主要用途是包装信息(message)。有如下特点:
1. immutable;
2. serializable;
3. support pattern matching;
4.无需使用new便可创建对象;
5. 实例类中可以带变元。 //我想与其用变元,还不如用函数获取信息
=============================================================
例 :
object CaseTest extends App{
  case class C1(i : Int, s:String)
  val c1 = C1(1,"hxf")
  c1.i=2      //错误!因为 case class C1是 immutable
}
=============================================================
例0:
object testCase extends App{
  case class MyCase(i:Int,s:String){
    var v : String=""
    var lst : List[String]=Nil
  }
  val myc = MyCase(3,"hxf")
  myc.v = "ye!"
  myc.lst="scala"::"何险峰"::myc.lst
  print(myc)
  print(myc.v)
  println(myc.lst)
}
运行结果:
MyCase(3,hxf)ye!List(scala, 何险峰)

该实验表明:
1. 对于一个实例(case)类,创建类的对象(object),可以无需new便可直接产生;
2. 实例(case)类中可以包含变元。
=====================================================================
例1:
    abstract class Term 
    case class Var(name: String) extends Term 
    case class Fun(arg: String, body: Term) extends Term 
    case class App0(f: Term, v: Term) extends Term

    Fun("x", Fun("y", App(Var("x"), Var("y")))) //不需要new就可以使用
    val x = Var("x") 
    println(x.name)
-----------------------------------------------------------------------------------------------------------
object TermTest extends App { 
      def printTerm(term: Term) { 
        term match { 
          case Var(n) =>print(n) 
          case Fun(x, b) =>print("^" + x + ".");printTerm(b) 
          case App0(f, v) =>print("(");printTerm(f);print(" ");printTerm(v);print(")") 
        } 
      } 
      def isIdentityFun(term: Term): Boolean = term match { 
        case Fun(x, Var(y)) if x == y => true
        case _ => false
      } 
      val id = Fun("x", Var("x")) 
      val t = Fun("x", Fun("y", App0(Var("x"), Var("y")))) 
      printTerm(t) 
      println 
      println(isIdentityFun(id)) 
      println(isIdentityFun(t)) 
    }
==============================================================
例 2

import akka.actor.{ ActorRef, ActorSystem, Props, Actor, Inbox }
import scala.concurrent.duration._

case object Greet
case class WhoToGreet(who: String)
case class Greeting(message: String)

class Greeter extends Actor {
  var greeting = ""

  def receive = {
    case WhoToGreet(who) => greeting = s"hello, $who"
    case Greet           => sender ! Greeting(greeting) // Send the current greeting back to the sender
  }
}

object HelloAkkaScala extends App {

  // Create the 'helloakka' actor system
  val system = ActorSystem("helloakka")

  // Create the 'greeter' actor
  val greeter = system.actorOf(Props[Greeter], "greeter")

  // Create an "actor-in-a-box"
  val inbox = Inbox.create(system)

  // Tell the 'greeter' to change its 'greeting' message
  greeter.tell(WhoToGreet("akka"), ActorRef.noSender)

  // Ask the 'greeter for the latest 'greeting'
  // Reply should go to the "actor-in-a-box"
  inbox.send(greeter, Greet)

  // Wait 5 seconds for the reply with the 'greeting' message
  val Greeting(message1) = inbox.receive(5.seconds)
  println(s"Greeting: $message1")

  // Change the greeting and ask for it again
  greeter.tell(WhoToGreet("typesafe"), ActorRef.noSender)
  inbox.send(greeter, Greet)
  val Greeting(message2) = inbox.receive(5.seconds)
  println(s"Greeting: $message2")

  system.shutdown()
}
运行结果 :
Greeting: hello, akka
Greeting: hello, typesafe
=========================================================
message分类:
节点获取省气象信息中心共享数据库资料,>=2400 站,<2400站
节点1csv文件加工
节点2csv日、旬、月文件加工
节点FTP获取气象省信息中心文件资料
节点客观分析
节点知识处理
节点1IDV图形分析
节点2IDV图形分析
节点3IDV图形分析
。。。。。
  评论这张
 
阅读(2318)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017