scala 包導入的那些事兒

import依賴庫是編程首要事件。就像呼吸一樣是那么的自然尸昧。scala也不能免俗揩页。我們知道JavaScala存在大量差異,但在import依賴上卻包含大量類似烹俗。

本文列舉下scala使用import的一些特殊的點,對那些通用import方法咱就不描述啦爆侣。

默認(隱含) import

在正式開始之前,咱們跑個題幢妄。
在使用scala時,我們發(fā)現(xiàn)即使沒有導入任何依賴, 如下代碼為何可以正常運行兔仰?

println("hello world.")
"01".toInt

編程語言是邏輯最嚴格的命令集合。代碼編譯/運行正常并不是銀彈蕉鸳。正常運行背后,它必然需要合理邏輯和解釋乎赴。而上面代碼正常執(zhí)行合理邏輯是:scala默認導入依賴庫,才保證常用api可以正常使用潮尝。

//默認導入庫
import java.lang._   
import scala._      
import Predef._     

上面3個庫是代碼正常運行的邏輯支撐榕吼。

命名沖突 - 重命名庫中成員

在開發(fā)過程中,命名沖突并不在少數(shù).項目對命名規(guī)則要求越規(guī)范,命名沖突機會會越多.簡單來個例子:Date在各個公共包中是常見的類.

import java.sql.Date //sql date 處理類
import java.uitl.Date //java 工具類中date處理類    

如何正確使用合適的類,解決命名沖突的問題.方式有很多,scala重命名類就是其中的一個。如下所示:

import java.sql.{Date => SqlDate}
import java.util.{Date => JavaDate}

scala REPL示例:

scala> import java.util.{Date => JavaDate}
scala> import java.sql.{Date => SqlDate}

scala> new JavaDate()
res0: java.util.Date = Tue Mar 17 16:05:39 CST 2020
scala> new SqlDate(111111)
res2: java.sql.Date = 1970-01-01

重命名庫的成員既規(guī)避了命名沖突,又對類庫進行分類,增加了可讀性勉失。

隱藏對象/排除對象

隱藏對象import方法和重命名思想類似羹蚣,操作方式如下:

import java.util.{Date => _} //隱藏對象Date

REPL 隱藏對象導入效果:

scala> import java.util.{Date => }
import java.util.{Date =>
}

scala> new Date()
<console>:15: error: not found: type Date //Date對象被隱藏
? new Date()
? ^

至于原理,熟悉=>操作符的很容易理解乱凿。

排除對象操作:

import java.util.{Date => _, _} //隱藏對象Date,在加上通配導入所有對應
靜態(tài)導入
//示例1
val a = sin(0) 
//示例2
val a = Math.sin(0)

示例1,2 最大的區(qū)別就是可讀性更強.這是靜態(tài)導入的功能顽素,靜態(tài)導入適用范圍是:java的靜態(tài)類和scala的object方法咽弦。

//示例1
import java.lang.Math._ // _ 導入Math所有方法和變量供導入方使用
//示例2
import java.lang.Math

可讀性是提升效率和可維護性關鍵指標。

按需導入(import statement anywhere)

上文命名沖突需要重命名類胁出, 按需導入也能夠解決型型。按需導入通過限制類/包作用域起到導入的作用.import可作用在對象/函數(shù),甚至變量中.

//在類中
class ImportInClass{
import scala.util.Random
def printRandom {
val r = new Random
}
}
//在方法中
class ImportInMethod {
def printRandom {
import scala.util.Random
val r = new Random
}
}

以上是scala包導入一些非常規(guī)操作,使用起來對代碼易用和可讀性上提升不少全蝶。

2020第一篇心情: [青海長云暗雪山闹蒜,孤城遙望玉門]

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市裸诽,隨后出現(xiàn)的幾起案子嫂用,更是在濱河造成了極大的恐慌,老刑警劉巖丈冬,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嘱函,死亡現(xiàn)場離奇詭異,居然都是意外死亡埂蕊,警方通過查閱死者的電腦和手機往弓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蓄氧,“玉大人函似,你說我怎么就攤上這事『硗” “怎么了撇寞?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長堂氯。 經常有香客問我蔑担,道長,這世上最難降的妖魔是什么咽白? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任啤握,我火速辦了婚禮,結果婚禮上晶框,老公的妹妹穿的比我還像新娘排抬。我一直安慰自己,他們只是感情好授段,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布蹲蒲。 她就那樣靜靜地躺著,像睡著了一般侵贵。 火紅的嫁衣襯著肌膚如雪届搁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音咖祭,去河邊找鬼。 笑死蔫骂,一個胖子當著我的面吹牛么翰,可吹牛的內容都是我干的。 我是一名探鬼主播辽旋,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼浩嫌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了补胚?” 一聲冷哼從身側響起码耐,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎溶其,沒想到半個月后骚腥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡瓶逃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年束铭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厢绝。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡契沫,死狀恐怖,靈堂內的尸體忽然破棺而出昔汉,到底是詐尸還是另有隱情懈万,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布靶病,位于F島的核電站会通,受9級特大地震影響,放射性物質發(fā)生泄漏嫡秕。R本人自食惡果不足惜渴语,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望昆咽。 院中可真熱鬧驾凶,春花似錦、人聲如沸掷酗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泻轰。三九已至技肩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背虚婿。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工旋奢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人然痊。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓至朗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親剧浸。 傳聞我的和親對象是個殘疾皇子锹引,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345