我可以在Haxe中为类定义隐式强制转换行为吗?

扬普

是否可以为类定义隐式强制转换?例如,我有一个课Color

class Color {
    public var r: Int;
    public var g: Int;
    public var b: Int;

    public function new(?r: Int = 0, ?g: Int = 0, ?b: Int = 0) {
        this.r = r;
        this.g = g;
        this.b = b;
    }
}

如果我有Array<Int>这样的话:

var myIntegerArray = [255, 0, 255]; // color written in RGB as an array
var c: Color = myIntegerArray; // <= how to make this possible?
trace(c.r);

@:from在课堂上尝试了一个静态函数:

@:from
static public function fromArray(a: Array<Int>) {
    return new Color(a[0], a[1], a[2]);
}

但编译器对此仍然不满意(Error: Array<Int> should be Color)。

我知道我可以像这样使用静态函数,var c = Color.fromArray(myIntegerArray);但我很好奇是否可以隐式转换它。

亚历克斯·科兹

不,对于普通班级进行隐式转换是不可能的。但是您有三种解决方案:

  1. abstract Color(Array<Int>)代替创建class;

  2. 使用“连锁”,如class Color> abstract ColorAbs> Array<Int>;

  3. 使用haxe.extern.EitherType<Color, Array<Int>>;

我不建议第二种解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以在Haxe中为类定义隐式强制转换行为吗?

来自分类Dev

超类中定义的隐式转换

来自分类Dev

我可以在Scala案例类中使用隐式转换方法吗?

来自分类Dev

我可以定义从std :: function到std :: shared_ptr <MyClass>的隐式转换吗?

来自分类Dev

我可以定义从std :: function到std :: shared_ptr <MyClass>的隐式转换吗?

来自分类Dev

我可以列出所有为类调用隐式toString()的情况吗?

来自分类Dev

在Swift中可以为您的类类型创建隐式转换吗?

来自分类Dev

如何让列表可以隐式转换为我的类对象?

来自分类Dev

php在隐式转换中的奇怪行为

来自分类Dev

隐式类也可以是动态的吗?

来自分类Dev

我可以让Scala更喜欢将隐式转换转换为Java 8 Lambda吗?

来自分类Dev

为什么隐式强制转换比JS中的显式转换快得多?隐式转换是一种好习惯吗?

来自分类Dev

自定义类上的Ruby隐式强制

来自分类Dev

抽象类中的隐式转换

来自分类Dev

抽象类中的隐式转换

来自分类Dev

包装类中的隐式转换

来自分类Dev

我可以使子类隐式继承基类构造函数吗?

来自分类Dev

自定义类到枚举类的隐式转换

来自分类Dev

我可以像在Objective-C中那样为Swift类定义属性的方法吗?

来自分类Dev

有没有一种方法可以在C#中定义隐式运算符,该隐式运算符定义从Expression到选定类的转换

来自分类Dev

我们可以在模拟器中为用户定义的数据类型强制值吗?

来自分类Dev

Haskell中的<-隐式强制类型会阻塞吗?

来自分类Dev

Haskell中的<-隐式强制类型会阻塞吗?

来自分类Dev

我可以强制knitr将“ \ n”解释为传递给R函数的字符串中的实际换行符吗?

来自分类Dev

可以在编译时隐式引用类名吗?

来自分类Dev

我可以从自定义类(不是活动类)中为上下文菜单充气吗?

来自分类Dev

如何使用CanBuildFrom为Traversable定义隐式类?

来自分类Dev

为什么我可以将隐式整数转换为C中的char

来自分类Dev

隐式转换还是强制转换?

Related 相关文章

  1. 1

    我可以在Haxe中为类定义隐式强制转换行为吗?

  2. 2

    超类中定义的隐式转换

  3. 3

    我可以在Scala案例类中使用隐式转换方法吗?

  4. 4

    我可以定义从std :: function到std :: shared_ptr <MyClass>的隐式转换吗?

  5. 5

    我可以定义从std :: function到std :: shared_ptr <MyClass>的隐式转换吗?

  6. 6

    我可以列出所有为类调用隐式toString()的情况吗?

  7. 7

    在Swift中可以为您的类类型创建隐式转换吗?

  8. 8

    如何让列表可以隐式转换为我的类对象?

  9. 9

    php在隐式转换中的奇怪行为

  10. 10

    隐式类也可以是动态的吗?

  11. 11

    我可以让Scala更喜欢将隐式转换转换为Java 8 Lambda吗?

  12. 12

    为什么隐式强制转换比JS中的显式转换快得多?隐式转换是一种好习惯吗?

  13. 13

    自定义类上的Ruby隐式强制

  14. 14

    抽象类中的隐式转换

  15. 15

    抽象类中的隐式转换

  16. 16

    包装类中的隐式转换

  17. 17

    我可以使子类隐式继承基类构造函数吗?

  18. 18

    自定义类到枚举类的隐式转换

  19. 19

    我可以像在Objective-C中那样为Swift类定义属性的方法吗?

  20. 20

    有没有一种方法可以在C#中定义隐式运算符,该隐式运算符定义从Expression到选定类的转换

  21. 21

    我们可以在模拟器中为用户定义的数据类型强制值吗?

  22. 22

    Haskell中的<-隐式强制类型会阻塞吗?

  23. 23

    Haskell中的<-隐式强制类型会阻塞吗?

  24. 24

    我可以强制knitr将“ \ n”解释为传递给R函数的字符串中的实际换行符吗?

  25. 25

    可以在编译时隐式引用类名吗?

  26. 26

    我可以从自定义类(不是活动类)中为上下文菜单充气吗?

  27. 27

    如何使用CanBuildFrom为Traversable定义隐式类?

  28. 28

    为什么我可以将隐式整数转换为C中的char

  29. 29

    隐式转换还是强制转换?

热门标签

归档