我創建了一個計算某些東西的算法。這可以被視爲模型。該算法以全功能的方式實現,因此它只使用不可變類。 現在使用這個模型,我想在它的頂部開發一個GUI層。不過,我不知道在Scala中構建GUI的最佳做法。我打算使用ScalaFX。Scala,GUI和不變性
我的問題是:在ScalaFX(類似於JavaFX)中,您可以將GUI中的值綁定到對象屬性。這顯然違反了功能範式,但看起來非常方便。 這將需要重寫我的類來使用可以綁定的屬性,這會感覺像尾巴搖擺狗 - 模型將取決於GUI。
另一方面,我可以有一個獨立的GUI層。在這種情況下,我需要代理對象綁定到,我將不得不基於這些代理對象創建我的模型對象。這會感覺更習慣,但意味着很多代碼重複和額外的工作。我的模型和代理對象必須保持同步,我必須照顧複製屬性。
這樣做的好方法是什麼? GUI總是充滿了可變性,所以函數式編程並不適合這裏。儘管如此,我還是喜歡Scala,所以我想繼續將它用於GUI。
「圖形用戶界面總是充滿可變性,所以函數式編程並不適合這裏。」斜視它正確的方式,它不是很可變:http://stackoverflow.com/questions/1028250/what-is-functional-reactive-programming –