Default operators on a record

The complete source of records_default_operator.ek9, compiled by the EK9 compiler. Shown on records.html.

#!ek9
defines module site.records.defaultoperator

  defines record

    Coordinates
      latitude as Float: Float()
      longitude as Float: Float()

      default Coordinates()

      Coordinates()
        ->
          latitude as Float
          longitude as Float
        this.latitude: latitude
        this.longitude: longitude

      //EK9 to provide default implementations
      default operator

  defines program

    DefaultOperator()
      stdout <- Stdout()

      first <- Coordinates(51.5, -0.12)
      second <- Coordinates(51.5, -0.12)
      stdout.println(`${first} ${first == second} ${first <=> second} ${first?}`)

Download records_default_operator.ek9

Output

Coordinates(latitude=51.5, longitude=-0.12) true 0 true