A record asking for its operators with default operator
The complete source of forAI_record_default_operators.ek9, compiled by the EK9 compiler. Shown on forAI.html.
#!ek9 defines module site.forAI.recordoperators defines record Customer name as String: String() email as String: String() default operator $ //field-by-field toString default operator $$ //field-by-field JSON default operator #? //field-by-field hashCode default operator ? //all-fields isSet default operator <=> //field-by-field comparison; == <> < <= > >= are generated from it default operator :=: //shallow copy: each field refers to the source's object defines program CustomerOperators() stdout <- Stdout() ada <- Customer() ada.name: "Ada" ada.email: "ada@example.com" copy <- Customer() copy :=: ada stdout.println($ada) stdout.println($$ada) stdout.println($ ada?) stdout.println($ (copy == ada)) stdout.println($ (ada < copy))
Download forAI_record_default_operators.ek9
Output
Customer(name=Ada, email=ada@example.com)
{"name":"Ada","email":"ada@example.com"}
true
true
false