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

Scala講座:全局變量問題的解決

開發 后端
本文開始Scala講座的第一部分內容,即用面向對象和函數式方法來解決全局變量問題,希望大家喜歡。

本文節選自最近在日本十分流行的Scala講座系列的第七篇,由JavaEye的fineqtbull翻譯。本系列的作者牛尾剛在日本寫過不少有關Java和Ruby的書籍,相當受歡迎。fineqtbull由于時間關系先翻譯了他認為最精彩的第七篇,這篇文章節選了第七篇中關于Scala全局變量的描述。

前言

這個連載也持續了不少的“刺激”內容了,這次為還沒有習慣函數式編程的讀者寫一些東西。

這樣寫那好像我就是函數式編程的高手了,其實不是。到現在為止做的盡是Java的工作,從去年開始對于羽生田先生的Scala工作感興趣之后投身于Scala語言以來,一直沒有習慣函數式的思考方法,整天在這里面摸爬滾打。看了大量文章,寫了大量代碼之后終于覺得抓住了函數式編程的重點。

用面向對象和函數式方法來解決全局變量問題

關于需要函數式編程的動機,想從“全局變量問題”這個側面來考慮一下。

“全局變量問題”是有關程序維護方面的問題(圖1)。在編寫多模塊共享全局變量的時候,很難知道在何時哪個模塊使用了該全局變量,程序也就比較容易出錯了。而且,當準備刪除全局變量時,由于不知道是否還有其他模塊在使用它,所以最終把全局變量的定義留在那里不動了。類似情況大家都應該碰到過吧。

Scala講座:全局變量問題

Scala講座 圖1:全局變量問題

解決“全局變量問題”有兩個方法,一是收窄數據的有效范圍;二是使變量被賦值一次后就不能更改。

面向對象的方式采取的是第一種方法。多模塊共有的數據被封裝在“對象”中,只有在“對象”內部才能夠被使用(圖 2)。

Scala講座 圖2:面向對象方式下解決全局變量問題的方法

Scala講座 圖2:面向對象方式下解決全局變量問題的方法

函數式語言采用的是第二種方法,也就是一旦給變量賦值后該變量的值將不會改變(圖3)。

Scala講座 圖3:函數式語言解決全局變量問題的方法

Scala講座 圖3:函數式語言解決全局變量問題的方法

因此,下述的代碼可以認為將數字“100”綁定在變量“price”上。感覺上就像變量“price”可以像數字“100”那樣被使用。以前的連載也提到過,Scala中如果用val來定義變量的話,該變量將不能被重新賦值。為了正真的函數式編程就用val來定義變量吧。

  1. scala> val price = 100
  2. price: Int = 100

這樣使變量的再賦值變得不可能之后,就能保證引用的透明性了。也就是說,使用同樣的值作為參數來調用同一函數的情況下,任何時候取得的返回值都是一致的。

例如面向對象的情況下,由于對象實例含有內部狀態,所以一旦內部狀態改變后,即使使用相同的參數向同一個對象實例傳遞消息,取得的結果也有可能不同(圖4)。如果是函數式編程的話就沒有這種“副作用”了。

Scala講座 圖4:副作用概念圖

Scala講座 圖4:副作用概念圖

【編輯推薦】

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

2009-12-09 17:07:08

PHP unset全局

2013-07-17 16:16:06

Android全局變量定義全局變量Application

2010-03-09 14:12:55

Python全局變量

2024-04-24 10:46:08

C++編程全局變量

2025-06-03 08:50:00

Static全局變量C 語言

2010-11-12 10:08:55

SQL Server全

2013-07-25 15:15:26

iOS開發學習iOS全局變量

2009-09-24 09:41:00

Scala講座Scala

2010-02-01 14:28:37

Python全局變量

2009-11-06 13:28:19

Javascript框

2013-07-22 14:07:47

2024-05-29 08:49:22

Python全局變量局部變量

2015-01-07 14:41:32

Android全局變量局部變量

2009-12-11 10:44:00

Scala講座函數 scala

2017-02-08 12:28:37

Android變量總結

2014-06-23 10:25:12

2010-09-08 17:25:17

SQL全局變量

2009-12-04 13:14:19

PHP Global變

2009-12-04 13:31:21

PHP全局變量不能生效

2021-02-26 13:42:01

函數全局變量
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av国产精品毛片一区二区小说 | 国产成人高清 | 日本黄色片免费在线观看 | 人人性人人性碰国产 | 九色av| 国产精品久久久久久久久久免费看 | 久久91精品| 免费观看一级特黄欧美大片 | 欧美精产国品一二三区 | 亚洲精品欧美精品 | 久久精品国产99国产精品 | 看av网址| 国产欧美精品一区二区 | 日韩中文字幕一区 | 久久精品久久精品久久精品 | 国产一区二区在线看 | 国产精品久久久久久久免费大片 | 日韩欧美亚洲 | 一区二区三区四区在线视频 | 国产男人的天堂 | 国产精品一区二区久久 | 天天插日日操 | 国产成人精品久久二区二区 | 狠狠狠干| 天堂综合| 日韩欧美在线不卡 | 嫩草视频入口 | 成人午夜影院 | 中文字幕高清视频 | 国产a级毛毛片 | 精品美女在线观看视频在线观看 | 成人精品在线视频 | 亚洲欧美精品 | 亚洲欧美中文字幕在线观看 | 亚洲成人免费在线观看 | 国产91久久久久蜜臀青青天草二 | 成年人在线电影 | 日韩在线观看一区 | 欧美日韩精品中文字幕 | 情侣av | 中文字幕伊人 |