小编Sap*_*ime的帖子

如何使用仅在运行时知道的值初始化对象值?

假设我正在尝试编写一个简单的Tic-Tac-Toe游戏.它有一个M×N场.游戏只有一个字段,所以它可能应该用单例表示object.像这样:

object Field {
    val height : Int = 20
    val width : Int = 15
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是我不想硬编码高度和宽度,所以如果可以在运行时通过构造函数或其他东西将它们传递给对象会很好.但是objects不能有构造函数.

好吧,我可以改变heightwidth成为vars,而不是vals并引入一种新方法

def reconfigure (h:Int, w:Int) = {
    height = h
    width = w
}
Run Code Online (Sandbox Code Playgroud)

并在游戏开始时调用它.但它也不优雅.

那么,有没有一种巧妙的方法 - 即使用val运行时之前未知的值初始化对象?

scala

14
推荐指数
2
解决办法
2万
查看次数

标签 统计

scala ×1