実行時のエラーを出してみる
前にテストコードで書いたこれがちょっとイマイチ・・・って気もしてて
return when (nextNodes.size) { 0 -> throw ToNextStatusException("zero match") 1 -> checkNode(data , nextNodes.first().toNode) else -> throw ToNextStatusException("many match") }
0とelseの時にExceptionを出しますなんだけど、意図としてはここに来たら設定的なエラーだよ!なんだよなぁ〜
ドキュメント見てたらこんな風にかける事に気がついたので
val nextNodes = nexts.values.filter { it.check(data) } return when (nextNodes.size) { 0 -> error("zero match") 1 -> checkNode(data , nextNodes.first().toNode) else -> error("many match") }
エラーだ!って判りやすくて良い気がする
あとこのコードもイマイチ不本意
val currentNode = flow.nodes.get(current) ?: throw ToNextStatusException("status name not found")
なんでnullならExceptionって書いてんだと。
val currentNode = requireNotNull(flow.nodes.get(current) , {"status name not found"})
NotNullでなければいけませんって宣言の方が良いよね!
あと、文字列を渡すんじゃなくてLambdaを渡すのが良い感じ
TODOもだけど、この辺も意外と標準で揃ってて良かった。