Skip to content

Instantly share code, notes, and snippets.

@Yuichiroh
Last active August 29, 2015 14:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Yuichiroh/515c241100d1e68e2522 to your computer and use it in GitHub Desktop.
Save Yuichiroh/515c241100d1e68e2522 to your computer and use it in GitHub Desktop.
import java.io.PrintWriter
import scala.io.Source
import scala.util.continuations._
trait ContextType[B]
def contextType[B]: ContextType[B] = null
def using[A <: AutoCloseable, B: ContextType](resource: A)(op: A => B) = {
try op(resource)
finally resource.close()
}
def resource[A <: AutoCloseable, B: ContextType](r: A) = shift(using[A, B](r))
def withResources[B](op: => B@cps[B]) = reset(op)
withResources {
implicit val _ = contextType[Unit]
val w1 = resource(new PrintWriter("col1.txt"))
val w2 = resource(new PrintWriter("col2.txt"))
Source.stdin.getLines().map(_.split("\t")).foreach {
case Array(col1, col2, _*) =>
w1.println(col1)
w2.println(col2)
case Array(col1) => w1.println(col1)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment