成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Scala講座:面向對象和函數式的特點總結

開發 后端
本文繼續Scala講座第七篇的最后一部分內容,總結了Scala中面向對象和函數式的特點,希望讀者們通過這一系列的講座會有所收獲。

這篇是Scala講座第七篇的第五部分,通過比較命令式、面向對象式和函數式編程的例子來闡述了他們的特點。一句話,可以從兩個方面來說明“面向對象式”和“函數式”。

Scala講座 表 

Scala講座 表:模塊層次與方法層次

#t#從分治法概念上來說,可以分為兩個軸上的問題,分別為模塊層次上的面向對象還是函數式,以及方法層次上的命令式還是函數式。從Java語言來說在模塊上是面向對象,在方法上是命令型。從Haskell語言來說模塊和方法層次上都是函數式。

那么說到Scala語言,他在模塊層次上既可以用面向對象又可以用函數式,在方法層次上既可以用命令又可以用函數式方法描述。例如可以在模塊層次上用面向對象,在方法層次上用命令式來描述。筆者個人覺得,在模塊層次上用面向對象方式則比較容易理解,在方法層次上用函數式則在很多情況下代碼會變得很簡單。

通過這次學習,說明了一下很可能成為函數式編程的障礙的基本思考方法。Scala有趣的地方是,它不僅可以用函數式方法來編程,用傳統的面向對象和命令式方法也行的特點。應此剛開始即使沒有“函數腦”也可以享受他的好處。

***盡筆者所能寫了一個將函數式和面向對象式編程方法混在一起的程序。感覺上是使用了函數式的函數,然后在上面蓋上類,然后再使用多態技術。這個程序雖然沒有實用性,但是可以感覺到由于有了Scala這類有趣的語言將來可能會誕生混合了“函數式”和“面向對象式”特點的創意或模式。

  1. case class Person(val name:String, val num:Int){  
  2. def say = {  
  3. "[" + num + "] " 
  4. }  
  5. def introduceMySelf = {  
  6. "My name is " + name  
  7. }  
  8. }  
  9. case class Sekaino(override val name:String, override val num:Int) extends Person(name, num){  
  10. override def say = {  
  11. num match {case 3 => "[Sir]" 
  12. case _ => super.say  
  13. }  
  14. }  
  15. }  
  16. object Count{  
  17. def main(args:Array[String]):Unit = {  
  18. val persons = (1 until 5).map(x => factory(args(0), x))  
  19. persons.foreach(show)  
  20. }  
  21. def show(person:Person) :Unit = {  
  22. println(person.introduceMySelf)  
  23. println(person.say)  
  24. }  
  25. def factory(name:String, num:Int) = {  
  26. name match {  
  27. case "nabe" => Sekaino(name, num)  
  28. case _ => Person(name, num)  
  29. }  
  30. }  

順便說明一下,內容為數一下執行結果的個數,只有3才打印。

#p#

C:\ scalatest>scalac Count.scala

C:\scalatest>scala Count ushio

My name is ushio

[1]

My name is ushio

[2]

My name is ushio

[3]

My name is ushio

[4]

C:\scalatest>scala Count nabe

My name is nabe

[1]

My name is nabe

[2]

My name is nabe

[Sir]

My name is nabe

[4]

到這里,Scala講座第七篇的內容終于結束了。對于Scala語言的面向對象式和函數式的特點,你是否了解了呢?

【編輯推薦】

  1. 萬物皆對象:介紹Scala對象
  2. Scala的泛型:***大的特性
  3. Scala的Trait:可以包含代碼的接口
  4. Scala的模式匹配和條件類
  5. Scala類:復數類,無參方法,繼承和覆蓋
責任編輯:book05 來源: JavaEye博客
相關推薦

2009-07-08 16:10:24

Scala簡介面向對象函數式

2009-12-11 10:44:00

Scala講座函數 scala

2009-12-11 10:42:00

Scala講座類定義構造函數

2009-09-27 15:23:00

Scala講座函數式編程Scala

2010-03-11 10:34:22

Scala

2009-06-16 17:09:17

Scala面向對象函數編程

2009-12-11 10:45:00

Scala講座類型系統功能

2009-09-24 09:38:00

Scala講座第一類對象scala

2011-06-28 11:06:16

Scala

2010-11-17 11:31:22

Scala基礎面向對象Scala

2009-09-24 09:28:00

Scala講座全局變量scala

2009-09-24 09:41:00

Scala講座Scala

2010-01-28 14:51:24

Scala后函數式

2009-12-11 10:43:00

Scala講座操作符函數

2013-11-26 10:14:15

面向對象函數式

2009-12-11 10:43:00

Scala講座混入多重繼承類型層次

2020-10-26 12:27:18

對象編程函數式

2011-06-02 09:47:11

C語言重構

2015-10-16 13:41:52

程序對象設計

2009-07-21 17:16:34

Scala函數式指令式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人精品 | 亚洲视频在线一区 | 亚洲成色777777在线观看影院 | 99视频 | 免费日韩av网站 | 久久av一区二区 | 97精品超碰一区二区三区 | 中文字幕人成人 | 国产视频一区二区三区四区五区 | 中文字幕亚洲一区 | 中文字幕一区在线观看视频 | 中文字幕爱爱视频 | 久久高清精品 | 91av视频在线免费观看 | 成人h动漫精品一区二区器材 | 午夜影院在线观看 | 日韩在线播放视频 | 国产精品久久久久久久久久久久久久 | 国产一级视频 | 国产成人免费视频网站高清观看视频 | 日韩精品一 | 久久久69 | 福利网站在线观看 | 女同久久另类99精品国产 | 中文字幕四虎 | 视频一区二区三区在线观看 | 精品一二三 | 精品无码久久久久久国产 | 日本一区二区三区四区 | 一区二区久久精品 | 精品久久久久久亚洲精品 | 欧美精品欧美精品系列 | 狠狠爱综合网 | 好姑娘影视在线观看高清 | 91av免费版| 综合二区| 日韩在线一区二区三区 | 九九热这里 | 国产精品久久国产精品 | 亚洲一区 中文字幕 | 91视频免费|