user
10/03/2017, 4:29 PMclass Position(val x: Int, val y: Int) {
fun right(units: Int) = whenPositive(units) { Position(x + units, y) }
fun left(units: Int) = whenPositive(units) { Position(x - units, y) }
fun up(units: Int) = whenPositive(units) { Position(x, y + units) }
fun down(units: Int) = whenPositive(units) { Position(x, y - units) }
private inline fun whenPositive(units: Int, function: (Int) -> Position) =
if (units < 0) throw IllegalArgumentException() else function(units)
}