PDA

Просмотр полной версии : Приведение типов


TanaTiX
27.03.2010, 17:57
Есть функция (к примеру foo), которая возвращает uint: к примеру return 3;
trace(foo().toString()); выдает
Неявное приведение значения типа Function к несоответстсвующему типу String.
Почему возникает такая ошибка и как с этим бороться? Ведь по идее просто переводим числовое значение в строку...
Заранее спасибо.

ЗЫ. задачу постарался максимально упростить


Up. Помогло String(foo());
Из этого вопрос в чем отличие (кроме того, что один вариант работает, а другой нет) между String() и toString() и что когда лучше использовать?


Up2. wvxvw, спасибо

wvxvw
27.03.2010, 21:11
У сложных объектов за исключением тех, которые наследуются от Proxy toString() и String(object) равнозначны, но String() будет медленнее потому, что вызовет toString(). У наследников Proxy toString() может быть неопределен. У null и undefined нет и не может быть методов, поэтому toString() у них вызвать нельзя.
То что вы видели - это скорее всего предупреждение (одно из дурацких в SDK), его вобщем-то лучше отключать, т.как никакй смысловой нагрузки оно не несет. Это на случай, если кто-то ошибся и хотел использовать метод как свойство - хотя за всею мою практику таких случаев было очень мало...