Scala传递变量

Scala传递变量,scala,parameter-passing,var,Scala,Parameter Passing,Var,在我的scala socket编程代码中有一个While循环,在该循环中,我将socket.inputstream转换为一个变量 这里的问题是,我不能在主函数或任何其他函数中使用此变量 class NetworkService(port: Int, poolSize: Int) extends Runnable { val serverSocket = new ServerSocket(port) val pool: ExecutorService = Executors.n

在我的scala socket编程代码中有一个While循环,在该循环中,我将socket.inputstream转换为一个变量

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

      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
}
}

我想将变量作为参数传递给另一个函数,该函数不能在主例程中使用。从逻辑上讲,这样做没有意义。首先,while循环将创建多个连接和in的多个值,因此从逻辑上讲,在调用run之后,in的单个值在main中没有意义。任何需要在中引用的代码都应该放在while循环中。例如,这可能包括对另一个函数的调用,在该函数中作为参数传入。

我不理解这个问题。def run与此有什么关系?为什么不能将var的值传递给println。为什么首先需要一个var?你的例子中没有任何东西改变它的值。Run只是作用域中的另一个函数,我想让我们在主函数中了解你使用的是单线程吗?我将发布整个代码。你收到了什么错误消息?