2016-05-09 2 views
2

私はScalaで演奏を始めましたので、私のコードは少しJava-ishです。以下は、私のコードは次のとおりです。クラスレベルの変数をスカラで宣言する

object TypeParam extends App{ 

    class Param1[T](val elem: T*){ 
    val elems : List[T] = elem.toList 
    def toPrint(): Unit ={ 
     elems.foreach(print) 
    } 
    } 

    @Override 
    def main(args : List[String]): Unit ={ 
    val x= new Param1[Int](1,2,3,4,6,7) 
    x.toPrint() 
    } 
} 

私が期待していどの要素を印刷得ることですが、不動産で、私は任意の出力を取得しておりません。

私はforEachでリストを簡単に印刷できることを知っていますが、学習のために物事を融合しようとしています。

なぜ私は出力が得られないのか説明できますか?スケーラではクラスレベルの変数を設定できませんか?

答えて

3

以下の構文を使用すると、App特性のmainメソッドをオーバーライドしないため、出力が表示されません。

override def main(args: Array[String]) { 

overrideキーワードの使用:構文以下

@Override 
def main(args : List[String]): Unit ={ 

使用しmainメソッドをオーバーライドします。 Scalaでは、具体的なメソッドをオーバーライドするときは、必ずoverrideを使用する必要があります。

+0

うん、それが働いてしまいました。ありがとう。 – Helios

2

私はmainメソッドの問題だと思います。 Apptraitを上書きしているので、実行したいコードを特定のメソッドを作成する代わりに、クラス本体の本体に配置することができます。 Appの

オリジナルmainは少し異なっています:

def main(args : scala.Array[scala.Predef.String]) : scala.Unit

+0

うん、それは修正されました。ありがとう。 – Helios