Я только начал использовать haxe(moving from AS3)
.Параметры типа роли должны быть динамическими
Я пытаюсь передать в массив, но это не работает, а именно, я получаю ошибку Cast type parameters must be Dynamic
при попытке скомпилировать. Ниже приведен код, я использую:
var result: Array<String> = cast(["sometext"], Array<String>);
var arr: Array<Int> = new Array<Int>();
arr.push(1);
var vect : Array<Int> = cast(arr, Array<Int>);
var arr1: Array<Int> = [1, 2 ,3];
var vect1 : Array<Int> = cast(arr1, Array<Int>);
var arr2 = [1, 2 ,3];
var vect2 : Array<Int> = cast(arr2, Array<Int>);
Каждый из этих 4 слепков не компилировать и дает ту же ошибку «Cast параметры типа должны быть динамичными». Если я изменю параметр типа на Dynamic, он тоже не будет работать. Он терпит неудачу с другой ошибкой.
Может кто-нибудь объяснить, почему этот способ кастинга не работает и как я могу бросить в Массив?
Другие слепки:
var i: Int = 1;
var j: Int = cast(i, Int);
var str: String = "str";
var str1: String = cast(str, String);
var instance: CastToArrayTest = new CastToArrayTest();
var instance1: CastToArrayTest = cast(instance, CastToArrayTest);
работать нормально.
Прежде всего, большое спасибо за ответ. Я понимаю вашу точку зрения, но все же думаю, что я не могу сделать безопасное действие следующим образом: var arr1: Array = [1, 2, 3]; var vect1: Array = cast (arr1, Array ); является недостатком haxe. Вы можете сделать это на других языках, AS3, TypScript и т. Д. Когда вы конвертируете код as3 в haxe/openFL, вы обычно конвертируете броски вышеупомянутым способом, и вы потерпите неудачу. Тем не менее, опять же, спасибо большое, кажется, что я должен использовать небезопасный приём, когда хочу создавать массивы. –
@CikaRaki Я тоже вижу вашу точку. Я бы добавил: (a) для безопасного использования (во время выполнения) 'something' to' Array 'действительно нужно было бы проверить не только то, что' something' является 'Array', но и все его элементы также имеют тип 'A'; (b) всевозможные варианты параметров типа могут вызывать много трудностей для отладки ([это по своей сути небезопасно, если допускаются изменения) (https://haxe.org/manual/type-system-variance.html)) ; (b) вам не нужны какие-либо преобразования или преобразования для 'var vect1 = arr1' (или' var vect1: Array = arr1'), если 'arr1' имеет тип' Array '. –