我想實現一個懶惰的序列(意味着下一個項目只在你調用step函數時計算),它應該有的一個方法是「map」,它接收一個函數影響所有成員。最優雅的方法是使用函數組合,並將新函數分配給函數變量,但由於函數不是Java中的第一類值,所以我不知道如何執行此操作。在Java中的函數組合
我想過有一個類只包含一個函數,就像一個「函數指針」包裝器,但我看不出如何用於合成。
編輯:問題是家庭作業有關。 另外,它應該能夠處理沿着地圖(地圖(地圖(stepFunction())))(在這種情況下爲「地圖」,通過方法「地圖」給出的功能)的線條上的多個構圖。
所以,當你說你想要做的地圖(地圖(地圖(stepFunction()))),這是否意味着你有列表的列表,並且你想調用stepFunction的每個元素的所有該層次中的子列表?我仍然不完全清楚你想要完成什麼。 – 2009-11-19 21:50:52
不可以。基本上這是一筆交易:在任何給定時間,我只有三件事:階梯函數,當前值和基值。如果Seq.map(someFunctionToMapWith)從未應用過,則當前值= base value = stepFunction(以前的基值)。但是,一旦映射應用於序列,每次調用seq.tail()更改當前值時,首先更改基本值並使用給定的函數進一步改變它:curr = mapFunc(stepFunc(base value ))(基值也被更新)。如果地圖被多次調用,它應該是map(map(.. map(stepFunc(base value))..))。 – EpsilonVector 2009-11-20 08:04:09