开发者

User-defined type conversions in ActionScript?

开发者 https://www.devze.com 2023-01-17 06:09 出处:网络
Is there any way for me to define implicit or explicit type conversions in ActionScript? For instance, I want to define a conversion such that Ar开发者_运维知识库ray can cast into MyClass implicitly.

Is there any way for me to define implicit or explicit type conversions in ActionScript?

For instance, I want to define a conversion such that Ar开发者_运维知识库ray can cast into MyClass implicitly. If not, an explicit cast would be useful. I know I can always pass it into my constructor, but I am dealing with semantics here, and I am most interested in a conversion solution if it exists.


Type casting in ActionScript 3

Object(instanceOfOtherObject);

Works based on the valueOf property of the given class (if defined). Therefore, you can define your class MyClass as such:

package {
    public class MyClass {

        private var myArray:Array;

        public function MyClass(inputArray:Array = null) {
            myArray = (inputArray ? inputArray : new Array());
        }

        public function valueOf():Array {
            return myArray;
        }
    }
}

Then you will be able to perform this typecasting:

var mc:myClass = new MyClass();
var arr:Array = Array(myClass);

To my knowledge, the reverse is not an option because the valueOf function of Array does not return an object of type MyClass. There is nothing stopping you from creating a CastableArray that extends and overrides the valueOf function of Array to make it return an instance of MyClass using the constructor I defined above, though you may run into other issues with other fundamental language components that expect an Array to return an Array in its valueOf property (comparison of objects comes to mind).

I have not done any particular testing with this next suggestion, but if MyClass extends from Array and does not define a valueOf function, it may still be possible to do the type conversion depending on the constructor of MyClass and what Flash does in circumstances when valueOf is not defined.

0

精彩评论

暂无评论...
验证码 换一张
取 消