HaxeFoundation / HaxeFoundation/haxe-evolution
Default value for enum parameters
- 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.