2

これは REPL の使用方法を理解していないだけかもしれませんが、 MyObject.myMethod("Hi") を呼び出して Hi または This is my message Hi を出力できるようにしたいと考えています

失敗した試みのいくつかを次に示します。

object MyObject {
    def myMethod(args: Array[String]) {
      println("This is my message "+args)
    }
  }

object MyObject {
    def myMethod(args: Array[String]) {
      println(args.map(_.mkString(" "))
    }
  }

エラー: サーバー タイムアウト - プログラムで無限ループが発生している可能性があります。しばらくお待ちください。新しいインタープリター インスタンスが作成されます。これには数秒かかる場合があります。

object MyObject {
    def myMethod(args: Array[String]) {
      println("Hello, " + args(0) + "!")
    }
  }

エラー: サーバー タイムアウト - プログラムで無限ループが発生している可能性があります。

これがインタープリターで使用するのが悪い例なのか、Scala の配列文字列を誤解しているのか、あるいはその両方なのか、よくわかりません。

4

3 に答える 3

0

あなたはコレフンにぴったりです。メソッドの呼び出し方法を知っているとつまずくようです。

  object ScalaMain {
  case class Person(name: String, age: Int)

  val persons = List(
    Person("Boris", 40),
    Person("Betty", 32),
    Person("Bambi", 17))

  val (minors, majors) = persons.partition(_.age <= 18) 

  def main(args: Array[String]) = {
    println (minors.mkString(", "))
    println (majors.mkString(", "))
  }
}

を使用して呼び出されます

ScalaMain.main(null)

これにより、次の結果が得られます。

Person(Bambi,17)
Person(Boris,40), Person(Betty,32)

参照: http://michid.wordpress.com/2010/08/24/so-scala-is-too-complex/

于 2013-03-19T20:39:36.427 に答える
0

2番目の例には、閉じ括弧がありません

println(args.map(_.mkString(" "))

そして、それは非常に多くの混乱を引き起こしていると思います(おそらく、メソッドとオブジェクトをまだ定義していることに気付いていないため、再帰呼び出しを定義しています.

REPLプロンプトにいることを確認してください

scala>

オブジェクトを定義する前に、オブジェクトを呼び出す前に定義が完了していることを確認してください。あなたの実際の上記も正しいとは思いませんprintln()が、括弧を修正すると道に進みます。

于 2013-03-19T11:20:07.423 に答える
0

最初に間違ってメソッドを呼び出しました。メソッドを次のように呼び出してみてください

MyObject.myMethod(Array("Hello"))

との違いに注意

MyObject.myMethod("Hello")

2 番目にarg.deepormkString(" ")をメソッドで使用して、文字列を表示します。

編集

ちなみに、 ScalaArrayは Java とは異なりArrayます。

于 2013-03-19T12:20:45.793 に答える