2010-01-28 9 views

Respuesta

5
scala> scala.tools.nsc.io.Process("ls -1 /tmp | wc").stdout foreach println 
     41  63  770 

O hay un comando repl:

scala> :sh cat /etc/passwd | wc 
stdout: List[String] = List(  65  185 3667) 

de enviar ningún código IO con 2,8 iba a requerir la superación de parada más energía que la que puedo vencer, por lo que poner todo en el compilador. Un montón de cosas razonablemente útiles en scala.tools.nsc.io.

3

No es del todo correcto decir que Java hace esto, debido a la diferencia de proceso/gestión de flujo en diferentes sistemas operativos, gran parte de esta funcionalidad se transmite al código nativo.

Una pregunta más interesante sería entonces preguntar si Scala tiene ninguna manera de trabajar más "idiomático" con los lectores y escritores (o canales si está envolviendo sus arroyos con funcionalidad NIO)

Y la respuesta?

Por el momento hay trabajos en curso en una biblioteca scala IO que se basarán en 2.8, esto casi seguramente incluirá una mejor manera de trabajar con transmisiones y canales, pero aún no está disponible.

También puede encontrar actores para ser una mejor manera de manejar la práctica común de utilizar un hilo para la entrada y un hilo para la salida cuando se trata de un proceso exec() 'd.

5

A partir de Scala 2.9, que puede hacer:

import scala.sys.process.Process 
println(Process("uname -a").!!.contains("x86_64")) 
Cuestiones relacionadas