Вкратце, я замечаю, что множество предопределенных функций в Unity (простая платформа разработки игр, которые я использую) либо вернут значение (например, координату), или вернет false, если выполняются определенные условия. Я попытался сделать это сам, однако компилятор всегда ищет преобразование как возвращаемый тип и не позволит мне возвращать логическое значение (потому что функция объявлена для возврата преобразования).Я хочу, чтобы функция возвращала определенное значение, else возвращает false
Transform SelectObject() {
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray, out hit, unitLayer))
return hit.transform;
else
return false;
}
Как вернуть определенный тип данных, но и у меня есть функция возврата булево (ложь), когда функция «не может» свою задачу?
Даже предопределенные функции должны быть документированы где-то. Возможно, вы хотите посмотреть на некоторые примеры такого поведения. Я не в Unity, но то, что вы здесь описываете, звучит довольно странно. Вы уверены, что нет каких-либо ** неявных ** конверсий, которые переводят что-то вроде «нулевого» возврата в ложное под обложками ?! – GhostCat
@GhostCat Ответ всегда был в моем коде все время. Я не понял основную концепцию «вне» ключевого слова. Некоторые предопределенные функции, такие как «Physics.Raycast()», вернут true или false в зависимости от того, были ли выполнены определенные условия, но эти функции также передают дополнительную информацию через другую переменную с ключевым словом «out». Эффективно возвращает логическую и некоторую дополнительную информацию. –