Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   типы данных - function (http://www.flasher.ru/forum/showthread.php?t=211405)

nelco 25.08.2015 01:35

типы данных - function
 
var consume = pet.eat;

какой тип данных у переменной consume?
можно ли писать var consume:Function = pet.eat (или Function - это не тип данных?)

alexandrratush 25.08.2015 03:33

Можно. Тип Function - это экземпляр класса Function.
http://help.adobe.com/ru_RU/FlashPla.../Function.html

caseyryan 25.08.2015 07:34

Тип данных у этой переменной будет таким же, какой возвращает метод eat()
Кстати, если тут имеется в виду вызов функции eat(), а не геттера или публичной переменной, то надо обязательно писать это с фигурными скобками.
Если у метода eat() тип данных указан как void, то его результат нельзя привязать к переменной, так как он ничего не возвращает. Если же там, к примеру вот так:
Код AS3:

 
private function eat():Apple{
  var apple:Apple = new Apple();
  // тут животное жрет яблоко
  return apple;
}

То переменная должна будет выглядеть так:
Код AS3:

var consume:Apple = pet.eat();


callme 25.08.2015 10:42

Цитата:

Сообщение от nelco (Сообщение 1186027)
var consume = pet.eat;

какой тип данных у переменной consume?

Переменная consume нетипизированная, у неё нет типа данных. В неё можно положить объект любого типа. Можно положить сначала объект одного типа, потом другого.

nelco 26.08.2015 02:18

спасибо за ответы, я думал, что если var consume = pet.eat(), то тип данных consume:Function только может быть, т.к. логически кажется что как бы это же метод pet.eat()... не думал, что тут тип - это возвращаемое методом eat значение. т.е. если метод eat() возвращает String, то записывать нужно var consume:String = pet.eat() значит?

caseyryan 26.08.2015 07:33

Цитата:

возвращает String, то записывать нужно var consume:String = pet.eat() значит?
Именно так. Или один из суперклассов (в некоторых случаях), но пока об этом думать не стоит

cleptoman 26.08.2015 15:14

вы не путайте ссылку на метод и результат вызова метода
Код AS3:

var f:Function = pet.eat;
var result:String = pet.eat();
var result2:String = f();



Часовой пояс GMT +4, время: 11:28.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.