除了推演變量的類型,scala也會推演方法的返回類型。不過這里有一處需要注意:方法返回類型的推演依賴於方法的定義方式。如果用等號“=”定義方法,scala就會推演方法返回類型;否則,它就認為方法的返回為void。看一個例子: 其中方法一是按照習慣方式定義的,方法二則是使用等號定義 ...
在上一節創建了一個scala類,如果沒有更多的方法,scala類的定義還可以更簡單一些,看一下下面這個CreditCard類的定義: 是的,只用一行就完成了類的定義,連大括號都不需要。 因為scala也是運行在JVM上,可以考慮以java的方式來看看編譯后的類文件。查看的方式還是比較靈活的,可以使用JD GUI,也可以使用javap private CreditCard命令,還有一個在線反編譯的網 ...
2016-06-15 22:36 0 2422 推薦指數:
除了推演變量的類型,scala也會推演方法的返回類型。不過這里有一處需要注意:方法返回類型的推演依賴於方法的定義方式。如果用等號“=”定義方法,scala就會推演方法返回類型;否則,它就認為方法的返回為void。看一個例子: 其中方法一是按照習慣方式定義的,方法二則是使用等號定義 ...
直接上代碼: ...
Scala的構造函數分為主構造函數和輔助構造函數。 輔助構造函數 輔助構造函數比較容易理解,它們同C++和Java的構造函數十分類似,只有兩處不同: 1、輔助構造函數的名稱為this,這主要是考慮到在C++和Java中,構造函數名與類名同名,當更改類名時需要同時修改構造函數名,因此使用 ...
前面兩節學了scala的對象和伴生對象,這兩個在使用的時候很有些java的靜態成員的意思。 scala中沒有靜態字段和靜態方法。靜態成員會破壞scala所支持的完整的面向對象模型。不過可以通過伴生對象實現對scala的類一級的操作。 回過頭來再看一遍那個Marker的例子,略做了一些調整 ...
java中的單例模式都很熟悉了:簡單地說就是一個類只能有一個實例。在scala中創建單例對象非常簡單,創建類時使用object關鍵字替換class即可。因為單例類無法初始化,所以不能向它的主構造函數傳遞參數。 下面是一個單例的示例: 其中的MarkerFactory就是一個單例。單例 ...
假定要在一個方法中返回多個值。比如需要返回一個人的名、姓和郵箱地址。在Java中最常用的方法是定義一個Person類,其中包括相對應的字段;還有些不常用的方法就是返回一個集合或數組,拿到結果后再進行循環取值。在Scala中我們又多一個選擇:元組。 元組是一個不可變的對象序列,可以使用逗號分隔的值 ...
在Java中是可以使用變長參數的,如下面的方法: 在scala中也可以使用變長參數。和java一樣,也是只有最后一個參數可以接收可變長度的參數。使用方式是在參數類型后使用特殊符號“*”,如下面的max()方法: foldLeft是TraversableOnce類的一個方法 ...
Any 前面已經有兩次提到過:在scala中,Any類是所有類的超類。 Any有兩個子類:AnyVal和AnyRef。對應Java直接類型的scala封裝類,如Int、Double等,AnyVal是它們的基類;對應引用類型,AnyRef是它們的基類。 scala中,所有類的關系可以用下面這張 ...