Xamarin Public Jenkins (auto-signing) 95fdb59ea6 Imported Upstream version 6.6.0.89
Former-commit-id: b39a328747c2f3414dc52e009fb6f0aa80ca2492
2019-09-24 08:53:40 +00:00

36 lines
908 B
Forth

module SomeNamespace.SomeModule
// This example is a basic class with (1) local let bindings, (2) properties, (3) methods, and (4) static members.
type Vector(x : float, y : float) =
let mag = sqrt(x * x + y * y) // (1)
member this.X = x // (2)
member this.Y = y
member this.Mag = mag
member this.Scale(s) = // (3)
Vector(x * s, y * s)
static member (+) (a : Vector, b : Vector) = // (4)
Vector(a.X + b.X, a.Y + b.Y)
// Declare IVector interface and implement it in Vector'.
type IVector =
abstract Scale : float -> IVector
type Vector'''(x, y) =
interface IVector with
member __.Scale(s) =
Vector'''(x * s, y * s) :> IVector
member __.X = x
member __.Y = y
type Vector2(x, y) =
interface IVector with
member __.Scale(s) =
Vector2(x * s, y * s) :> IVector
member __.X = x
member __.Y = y