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

您的第二个示例缺少右括号

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

我认为这会造成很大的混乱(也许您正在定义递归调用,因为您没有意识到您仍在定义方法和对象。

确保您在 REPL 提示符下

scala>

在定义对象之前并确保在调用它之前定义是完整的。我认为您的println()上述实际情况也不正确,但更正括号会让您上路。

于 2013-03-19T11:20:07.423 回答
0

你在 Korefn 的位置。似乎知道如何调用该方法使我绊倒。

  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

您最初错误地调用了该方法。尝试将该方法称为

MyObject.myMethod(Array("Hello"))

注意与

MyObject.myMethod("Hello")

第二次使用arg.deepmkString(" ")在方法中显示字符串。

编辑

ScalaArray的方式与 java 不同Array

于 2013-03-19T12:20:45.793 回答