我將在此前面說這絕不是一個主要問題,更多的是我在編程語言設計方面沒有真正聽過的東西,而我是想知道是否有人有任何有趣的解決方案。面嚮對象語言中的抑制方法返回
問題的癥結在於此。有時候在面向對象的語言中,我希望能夠通過其中一種方法修改對象,但返回對象本身而不是該方法返回的內容。
給一個java例如:
class MyClass{
public MyClass(List<Integer> list){
//do constructor stuff
}
public MyClass(Integer i){
//what I would like to be able to do
this((new LinkedList<Integer>).add(i));
}
}
我不能創建在第二個構造的臨時列表,因爲這()必須是第一道防線。顯然有很多方法可以通過更改實現來實現,例如創建一個返回對象的add()方法,使其成爲構造列表對象的函數的責任,等等。
但是,考慮很多時候你不能/不想修改或創建一個子類(對於LinkedList),你可能不想篡改調用代碼,能夠修改並返回一個對象,其格式爲+ + x可能非常有用。像 this(#(new LinkedList).add(i)
來表示你想要的對象,而不是方法返回。有誰知道一種語言允許這是一些簡潔的語法方式?如果沒有,這是否會有用或者我在這裏丟失了什麼?
你的問題是有點困難在你真正想要達到什麼樣的條件來理解。 – Casey
@AndrasK任何答案都可以接受? – Justin
我想實現的關鍵是通過他們的方法修改匿名對象的乾淨方式。有可能通過讓所有類的方法返回自己來實現,但這並不是「乾淨」的, – AndrasK