前面兩節學了scala的對象和伴生對象,這兩個在使用的時候很有些java的靜態成員的意思。 scala中沒有靜態字段和靜態方法。靜態成員會破壞scala所支持的完整的面向對象模型。不過可以通過伴生對象實現對scala的類一級的操作。 回過頭來再看一遍那個Marker的例子,略做了一些調整 ...
在Java中是可以使用變長參數的,如下面的方法: 在scala中也可以使用變長參數。和java一樣,也是只有最后一個參數可以接收可變長度的參數。使用方式是在參數類型后使用特殊符號 ,如下面的max 方法: foldLeft是TraversableOnce類的一個方法。上面的代碼實現了從一個集合中獲取最大數值的方法。 代碼執行結果如下圖: 不過和java不同的是,我們不能將一個數組中的元素當做變長參 ...
2016-07-16 23:00 0 1923 推薦指數:
前面兩節學了scala的對象和伴生對象,這兩個在使用的時候很有些java的靜態成員的意思。 scala中沒有靜態字段和靜態方法。靜態成員會破壞scala所支持的完整的面向對象模型。不過可以通過伴生對象實現對scala的類一級的操作。 回過頭來再看一遍那個Marker的例子,略做了一些調整 ...
Any 前面已經有兩次提到過:在scala中,Any類是所有類的超類。 Any有兩個子類:AnyVal和AnyRef。對應Java直接類型的scala封裝類,如Int、Double等,AnyVal是它們的基類;對應引用類型,AnyRef是它們的基類。 scala中,所有類的關系可以用下面這張 ...
java中的單例模式都很熟悉了:簡單地說就是一個類只能有一個實例。在scala中創建單例對象非常簡單,創建類時使用object關鍵字替換class即可。因為單例類無法初始化,所以不能向它的主構造函數傳遞參數。 下面是一個單例的示例: 其中的MarkerFactory就是一個單例。單例 ...
除了推演變量的類型,scala也會推演方法的返回類型。不過這里有一處需要注意:方法返回類型的推演依賴於方法的定義方式。如果用等號“=”定義方法,scala就會推演方法返回類型;否則,它就認為方法的返回為void。看一個例子: 其中方法一是按照習慣方式定義的,方法二則是使用等號定義 ...
假定要在一個方法中返回多個值。比如需要返回一個人的名、姓和郵箱地址。在Java中最常用的方法是定義一個Person類,其中包括相對應的字段;還有些不常用的方法就是返回一個集合或數組,拿到結果后再進行循環取值。在Scala中我們又多一個選擇:元組。 元組是一個不可變的對象序列,可以使用逗號分隔的值 ...
在上一節創建了一個scala類,如果沒有更多的方法,scala類的定義還可以更簡單一些,看一下下面這個CreditCard類的定義: 是的,只用一行就完成了類的定義,連大括號都不需要。 因為scala也是運行在JVM上,可以考慮以java的方式來看看編譯后的類文件。查看的方式還是比較 ...
scala中的字符串類就是java中的java.lang.String類。不過scala也為String提供了一個富封裝類:scala.runtime.RichString。 scala可以將java.lang.String類自動轉換為scala.runtime.RichString類 ...
當你注冊組件時,可以為組件服務傳入一系列參數,用於服務解析時使用。 可使用的參數類型 Available Parameter Types Autofac提供了集中參數匹配類別: NamedParameter - 直接通過名稱匹配目標參數 TypedParameter ...