2

Scala でグローバル変数を使用しようとしています。プログラム全体でアクセスできるようにします。

val numMax: Int = 300 

object Foo {.. }
case class Costumer { .. }
case class Client { .. }
object main {
var lst = List[Client]
// I would like to use Client as an object .

}

このエラーが発生しました:

エラー: メソッド apply の引数がオブジェクト リストにありません。部分的に適用された関数として扱いたい場合は、このメソッドの後に `_' を付けてください var lst = List[A]

メインプログラムでアクセスできるように、Scala でグローバル変数を処理するにはどうすればよいですか。この場合、クラスまたはケースクラスを使用する必要がありますか?

4

2 に答える 2

2

これはグローバル変数の問題ではありません。むしろ、あなたはこう言いたいのです:

val lst = List(client1, client2)

ただし、他の回答には多少同意しません。Scala は単なる関数型言語ではありません。これは機能的 (Clojure ファンに尋ねると、本来あるべきほど純粋ではないかもしれません) であり、オブジェクト指向でもあります。したがって、OO の専門知識は完全に翻訳されます。

グローバル変数自体には何の問題もありません。懸念されるのは可変性です。val私がしたように好むvar。また、Java で慣れ親しんだパラダイムobjectではなく、シングルトンを使用する必要があります。static

于 2013-11-08T22:28:05.973 に答える
1

引用したエラーは、グローバル変数を作成しようとする試みとは無関係です。()の後に行方不明がありList[Client]ます。

グローバル変数を作成する必要がある場合は、それを のようなオブジェクトに配置し、 if the variable is calledFooを使用して他のオブジェクトから参照できます。Foo.numMaxnumMax

ただし、グローバル変数は推奨されません。代わりに、必要なデータを必要な関数に渡すこともできます。それが機能的な方法です。

于 2013-11-08T22:15:15.743 に答える