我在网上四处寻找在 scala 中可能类似于或像 F# 可区分联合一样工作的东西,但无论我在哪里看,我都找不到任何东西,除了看起来有点像它的案例类。 . 但是它们到底有什么不同呢?
例如:
type Shape =
| Circle of double
| Square of double
let area =
function
| Circle radius -> 3.1415 * radius * radius
| Square length -> length * length
let circle = Circle(15.0)
printfn "The circle's area is %A" (area circle)
上面的代码基本上是一个案例类,还是我必须做一些不同的事情才能获得相同的功能?