Я пытаюсь смоделировать точку с координатами x и y. Я хотел бы сделать это так, чтобы было невозможно смешать значения x и y.
Итак, я придумал следующее:
package com.craigtreptow.scrayz
package object types {
type X = Double
type Y = Double
type Point = (X,Y)
}
Я тогда использовал это так:
package com.craigtreptow.scrayz.types
object Main extends App {
val x: X = 1.1
val y: Y = 2.2
val p: Point = (x, x)
println(p)
}
Я ожидал, что выдаст ошибку, но это сработало:
~/c/scrayz(master|✚2…)> sbt run
[info] Loading project definition from /Users/Ctreptow/code/scrayz/project
[info] Loading settings for project scrayz from build.sbt ...
[info] Set current project to Scrayz (in build file:/Users/Ctreptow/code/scrayz/)
[info] running com.craigtreptow.scrayz.types.Main
(1.1,1.1)
[success] Total time: 1 s, completed Mar 9, 2020 6:08:49 PM
Возможно ли смоделировать Point
таким образом, чтобы приведенный выше код приведет к ошибке компилятора?