VarArgs.hx 622 B

12345678910111213141516171819202122232425262728293031
  1. package python;
  2. import python.lib.Builtin.list;
  3. /**
  4. This type represents python `*args` feature, supporting
  5. passing arbitrary number of arguments to a function.
  6. Example:
  7. function f(args:VarArgs<Int>) {}
  8. f([1, 2, 3]);
  9. **/
  10. @:analyzer(no_simplification)
  11. abstract VarArgs<T>(Dynamic) {
  12. inline function new(d:Array<T>) {
  13. this = d;
  14. }
  15. inline function raw():Dynamic {
  16. return this;
  17. }
  18. @:to public inline function toArray():Array<T> {
  19. return if (!Std.is(raw(), Array)) list(raw()) else (raw() : Array<T>);
  20. }
  21. @:from static inline function fromArray<T>(d:Array<T>):VarArgs<T> {
  22. return new VarArgs(d);
  23. }
  24. }