Я фактически разместил это на форумах Unity, но ни один из моих вопросов, связанных с языком, никогда не получил ответа. Итак, допустим, у меня есть функция, определенная как это в Unity Script:Функция Downcasting в UnityScript
function GetSomething : SomeClass
{
return new SomeClass();
}
Где SomeClass это некоторый класс, определенный в другом месте. Теперь у меня есть переменная, функция, типа Function, и я хочу убедиться, что она что-то возвращает. Так что я делаю следующее:
// theFunction is set to GetSomething somewhere else in the program.
var functionThatReturnsSomething = theFunction as function() : Object;
if (functionThatReturnsSomething != null)
//... call it and do stuff with the returned value.
Сейчас, к сожалению, в приведенном выше коде functionThatReturnsSomething будет нулевым. Для этого не быть пустым, я должен быть более конкретным и приведение к функции(): SomeClass ИЛИ просто переопределить определение функции, чтобы вернуть объект, как так:
function GetSomething : Object
{
return new SomeClass();
}
Это очень раздражает, потому что его легко забыть to: Object (особенно если вы оставите его, он будет правильно вывести его как возвращаемый тип SomeClass), и результат не является ошибкой, а скорее очень тонкой ошибкой, так как сбрасывание происходит неудачно. Есть ли способ получить поведение, которое я хочу, чтобы оно было правильно опущено для функции(): Object, так же, как я могу сбрасывать обычные объекты?
erm .. Почему бы вам просто не назвать функцию по имени? В чем смысл иметь объект сам по себе? – noob
Моя программа в буквальном смысле не делает выше, это ситуация, которая возникает из класса, который может содержать обратный вызов. Обратный вызов имеет тип Function, и пользователь API может выбрать, чтобы обеспечить обратный вызов, который либо возвращает значение (и это значение используется), либо тот, который возвращает void. Я использую typecast, чтобы проверить, в каких ситуациях я нахожусь. –
Итак, я согласен, зачем делать объект? почему бы просто не установить и не получить эту часть данных? – crychair