Scalaっぽいのか?
なんかずっと処理をするスレッドを起動して、メインスレッドではユーザからの終了指示待ちって状況はよくあると思います。
具体的には、TwitterのStreaming APIを使ってずっと処理をしていて、止めたいと思った時に止めさせるとか。
そんな状況が今日発生しました。
僕が普段Javaとかでよくやる手はwhile(true)ってやって無限ループの中で入力待ちして、その中でbreakとかやります。
でも今日はScalaです。
無限ループしてbreakするとかはScalaっぽくないと思ったので下のようにしました。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
object WaitInput extends App { | |
/* 別のThreadで何か処理をするタスクを起動 */ | |
/* q↓が入力されるまで永遠に待ち続ける関数 */ | |
def waitInput(c:Char) : Unit = { | |
c match { | |
case 'q' => /* 終了処理 */ | |
case _ => waitInput(readChar) /* 他のキーだったら再び入力待ち */ | |
} | |
} | |
/* 入力待ちする */ | |
waitInput(readChar) | |
} |
0 件のコメント:
コメントを投稿