我讀馬丁Odersky的有關Scala的類型系統的面試,以下一直說確定型結構在斯卡拉
其中一個方面,其中,Scala是比Java更具有表現力的是,它可以讓你表達這些東西。在Scala中,可能有這樣一種類型:使用close方法的任何參數都不帶參數並返回Unit(與Java中的void類似)。您也可以將其與其他約束條件結合使用。你可以說:任何從特定類繼承的東西,此外還有這些具有這些簽名的特定方法。或者你可以說:從這個類繼承的任何東西都有一個特定類型的內部類。從本質上講,可以通過說明類型中需要的內容來結構化表徵類型,以便可以使用它們。
有人可以在Scala中編寫代碼片段來展示如何在結構上表徵類型?看完後,我有一種感覺,我應該能夠做到以下幾點:
type CanClose { def close: Unit }
val closeableFile: CanClose = new File()
val closeableStream: CanClose = new Stream()
他談論的是結構類型。谷歌的「斯卡拉結構類型」,你會發現更多的信息。 – Jesper
關於你的例子:它應該是'type CanClose = {def close:unit}'(注意'='),如果用'File'表示'java.io.File',它沒有'close '方法。 – Jesper