Scala传递变量

时间:2014-06-08 18:28:26

标签: scala parameter-passing var

我在套接字编程的scala代码中有一个While循环,其中我将socket.inputstream变为变量

这里的问题是我不能在main函数或任何其他函数中使用此变量

      class NetworkService(port: Int, poolSize: Int) extends Runnable {
  val serverSocket = new ServerSocket(port)
  val pool: ExecutorService = Executors.newFixedThreadPool(poolSize)

  def run() {
    try {
      while (true) {
        // This will block until a connection comes in.
        val socket = serverSocket.accept()
        val in = new BufferedReader(new InputStreamReader(socket.getInputStream)).readLine



        pool.execute(new Handler(socket))

      }
    } finally {
      pool.shutdown()


    }
  }

}

class Handler(socket: Socket) extends Runnable {
  def message = (Thread.currentThread.getName() + "\n").getBytes

  def run() {
    socket.getOutputStream.write(message)
    socket.getOutputStream.close()

  }
}


object MyServer {
  def main(args: Array[String]) {
(new NetworkService(2030, 2)).run
////////I WANT TO USE THE IN here
}
}

我想将变量作为参数传递给另一个函数

1 个答案:

答案 0 :(得分:2)

您无法在in例程中使用main。从逻辑上讲,这样做是没有意义的。一方面,while循环和in的多个值会创建多个连接,因此逻辑上没有in的单个值在这一点上有意义。致电mainrun。任何需要引用in的代码都应该放在while循环中。那可能是例如包含对另一个函数的调用,在该函数中将in作为参数传递。