HaxeFoundation / HaxeFoundation/haxe-evolution

Default value for enum parameters

Open
#27 13 comments 27 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
119
Forks
56
PR merge metrics
No merged PRs in 30d

Description

I was surprised to find that while
```haxe
enum Schedule {
Hourly(?minute:Int);
// ...
}
```

is possible, this is not:
```haxe
enum Schedule {
Hourly(minute:Int=1); // characters 18-19 : Unexpected =
// ...
}
```

Right now I have to do additional null-checks on enums with optional parameters like so
```haxe
var instance = new MyClass(Schedule.Hourly());

function MyClass {
var schedule:Schedule;

public function new(var schedule:Schedule){
// validate schedule
switch (schedule) {
case Hourly(minute):
// check for null and apply a default value if found
if(minute == null) {
minute = 1;
schedule = Schedule.Hourly(minute);
} else if (minute < 0 || minute > 59)
throw "Hourly.Minute must be >= 0 and < 60";
}
// ...
}
this.schedule = schedule;
}
}
```
instead of simply:
```haxe
var instance = new MyClass(Schedule.Hourly());

function MyClass {
var schedule:Schedule;

public function new(var schedule:Schedule) {
// validate schedule
switch (schedule) {
case Hourly(minute):
if (minute < 0 || minute > 59)
throw "Hourly.Minute must be >= 0 and < 60";
// ...
}
this.schedule = schedule;
}
}
```

Therefore I would request adding default value behaviour for enums as specified here https://haxe.org/manual/types-function-default-values.html

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.