Actionscript 3 с одним аргументом конструктора? - PullRequest
0 голосов
/ 20 июня 2011

допустим, у меня есть класс:

public class SomeClass{
    var name:String;
    public function SomeClass(n){
        name = n;
    }
}

Если я сделаю var s:SomeClass = SomeClass("test");, он попытается преобразовать строку в SomeClass.Как мне предотвратить это?

Извините, я новичок в AS3.

Ответы [ 2 ]

8 голосов
/ 21 июня 2011

Вам не хватает оператора new:

var s:SomeClass = new SomeClass('test');


Если вы не используете оператор new, действительно нет хорошего способа создатьчлен класса в ActionScript.Однако есть некоторые заметные исключения.Массив, XML, XMLList, int, uint, Number, String и Object почти никогда не должны использовать свои конструкторы.

//To get a new array
var a:Array = [/*initial values*/];
// a new Object
var o:Object = {};

В AS использование имени класса в качестве функции на самом деле означает «Привести это к классу».Вы также можете сделать это через оператор as.Разница в том, что as вернет ноль при неудаче, другие средства выдадут ошибку:

// I NEED this to be a Foo, so I will force the matter.
var foo:Foo = Foo(otherVariable);

// It would be nice to have this as a Foo, but if it is null, whatever:
var foo:Foo = otherVariable as Foo.
0 голосов
/ 21 июня 2011

Я никогда не видел, чтобы он пытался автоматически преобразовывать типы данных, как вы говорите.
Но в любом случае вы не приводите тип к своему параметру и не объявляете тип возвращаемого значения.
Будучи конструктором, он должен возвращать void.
Вы также не объявляете область действия имени переменной /
Также вы не декларируете пакет

package{
  public class SomeClass{
      public var name:String;
      public function SomeClass(n:String):void{
          this.name = n;
      }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...