object GeoPoint(private val lat : Double, private val lon : Double) {
require(lat <= 180 && lat >= -180)
require(lon <= 180 && lon >= -180)
def withLon(private val newlon) = {
require(newlon <= 180 && newlon >= -180)
GeoPoint.new(lat, newlon)
}
def withLat(private val newlat) = {
require(newlat <= 180 && newlat >= -180)
GeoPoint.new(newlat, lon)
}
def toString = {
(if (lat >= 0) "N" + lat else "S" + -lat) + " " +
(if (lon >= 0) "E" + lon else "W" + -lon)
}
}
object Main {
def main(args: Array[String]): Unit = {
GeoPoint geo = GeoPoint.new(39.1915045, -96.6070506);
println(geo.lat);
println(geo.lon);
println(geo);
}
}