なぜグローバル変数だけが必要だと思いますか? グローバル値とメソッドは非常に便利です。object
これは、Scala で使用するもののほとんどです。
object NumericConstant {
val Pi = 3.1415926535897932385 // I probably will not change....
}
object NumericFunctions {
def squared(x: Double) = x*x // This is probably always what we mean...
}
ここで、グローバル変数の使用に注意する必要があります。必要に応じて、それらをオブジェクトに実装できます。次に、あなたが不注意であるかどうか (注: クラスの同じインスタンスをプログラム内のすべてのクラスとメソッドに渡すことは同様に問題があります)、または実際に行っていることのロジックが単一のグローバル値。
これは本当に、本当に悪い考えです:
object UserCache {
var newPasswordField: String = "foo bar"
}
2 人のユーザーが同時にパスワードを変更すると...うーん...何人かのユーザーが不満を持つことになります。
一方で、
object UserIDProvider {
private[this] var maxID = 1
def getNewID() = this.synchronized {
var id = maxID
maxID += 1
id
}
}
このようなことをしなければ、不満を抱くユーザーが何人か増えることになります。(もちろん、起動時にユーザー ID 番号に関するディスク上の状態を読み取る必要があります... または、そのすべてをデータベースに保持する必要があります... しかし、要点はわかります。)