, - , stdin, . , , " " Scala, . , , Scala, / Scala, , Process.run(true) /err , .
SimpleProgram :
package so
import java.util.Scanner
object SimpleProgram extends App {
def getInput(prompt: String): Option[String] = {
print( s"$prompt: " )
val sc = new Scanner(System.in)
sc.hasNextLine match {
case true => val out = sc.nextLine
if( out.length > 1 ) Some(out) else None
case _ => None
}
}
while( true ) {
(getInput("username"), getInput("password")) match {
case (Some(u), Some(p)) => println( s"Logged in as $u" ); System.exit(0)
case _ => println( "Invalid input. Please try again." )
}
}
}
, ProcessBuilder ( ):
package so
import scala.sys.process._
object ProcessBuilderTest extends App {
val classpath = "<path to>/scala-library.jar:./classes"
val pb = Process("java", Seq("-cp", classpath, "so.SimpleProgram" ))
pb.run(true)
}
Process ProcessBuilder. ProcessIO , , .. , run(true) .
:
username: foo
password:
Invalid input. Please try again.
username: foo
password: bar
Logged in as foo
"java" Scala, Scala, mac, Eclipse. Eclipse ProcessBuilderTest , "" "bin".