對不屬於類的效用函數進行分組的最佳方式是什麼?在Ruby中,我會將它們分組到一個模塊中。我是否應該使用Scala中的特性來獲取相同的效果或對象?在Scala中分組實用程序功能的首選方法?
回答
通常,我將語義上不同的效用函數放入不同的特徵中,併爲每個特徵創建一個對象,例如,
trait Foo {
def bar = 1
}
object Foo extends Foo
這樣我就很靈活。我可以在類聲明中通過import
聲明或通過with
導入效用函數。此外,我可以很容易地將不同的實用特徵組合到一個新的對象中,以簡化最常用的實用功能的輸入語句,例如,
object AllMyUtilites extends Foo with Foo2
特性,如果你希望它們與要使用它的類混在一起。對象,如果你只想導入它們。
如果你有針對不同操作系統的效用函數,那麼將它們作爲特徵不是更好嗎?這樣一些行爲可以繼承? – Geo 2011-04-23 11:38:07
@Geo,你的意思是?與不同實現(每個操作系統一個)有相同的界面?那麼它不僅僅是效用函數,更多的是設計問題(也許是一個需求)。 – pedrofurla 2011-04-23 12:52:18
包對象或只是普通的對象。例如,參見Scala.Predef
和scala.math
。
如果您想利用亞型polymorphysm,該怎麼辦? – 2017-11-22 09:05:30
- 1. 功能VS Scala的方法
- 2. 在Cocoa應用程序中組織源文件是否有首選方法?
- 3. 在Scala中實現特徵的部分功能
- 4. 稱取功能Scala的泛型方法
- 5. Scala,不能實現通用java方法
- 6. 序列樣功能Scala中
- 7. 在Scala中編程的功能隊列
- 8. 使用MVVM處理應用程序事件的首選方法
- 9. Scala的部分應用咖喱功能
- 10. Scala程序和功能差異
- 11. 什麼是預先分配NumPy數組的首選方法?
- 12. 在AngularJS應用程序中驗證數據的首選方法是什麼?
- 13. 在C++中組織實用功能
- 14. 只有在應用程序首次在Android中運行時才使用共享首選項來調用方法?
- 15. 在貓鼬中定義數組的首選方法是什麼?
- 16. 功能Scala的
- 17. 在C++中實現工廠方法的首選方法是什麼?
- 18. 跨線程編組COM接口的首選方法是什麼?
- 19. 在Scala中實現Java接口方法
- 20. 在scala類中實現哈希方法
- 21. Scala:函數/方法應用程序和元組
- 22. 安卓方法分析與am實用程序缺少方法
- 23. 在Windows Mobile應用程序中存儲應用程序設置的首選方法是什麼?
- 24. 在Windows中映射遠程文件系統的首選方法?
- 25. 分組和分組功能?
- 26. 什麼是應用程序的功能和非功能部分?
- 27. 在Scala中實現groupBy方法的替代方法?
- 28. 在iOS 5的iPhone應用程序中實現聊天功能?
- 29. 在Android應用程序中實現一次的功能
- 30. 安卓應用程序分組根據其作用(功能)
我認爲'with'是一種不好的做法,因爲它會污染類型,給予較少的靈活性(您可以跳過並重命名爲'import's),並且您從不需要您的類也是實用程序類,只有當您組你的公用事業。所以,我會留下'對象'或只使用'with'來進行分組。 – Tvaroh 2014-01-23 22:36:54
這真是太好了,我在想是否有特質或物體,但你可以有_both_! =) – dividebyzero 2016-06-23 20:52:37