Существует неявное преобразование из "float" и "float" и от "float" до "float"
Вероятно, лучшее сообщение об ошибке, которое я получил некоторое время, мне любопытно, что пошло не так.
Исходный код
float currElbowAngle = LeftArm ? Elbow.transform.localRotation.eulerAngles.y
: 360f - Elbow.transform.localRotation.eulerAngles.y
Я использую Unity3d и С#; LeftArm - это тип bool
и в соответствии с documentation Elbow.transform.localRotation.eulerAngles.y
возвращает значение float
.
Этот код дает мне ошибку:
Существует неявное преобразование из "float" и "float" и от 'float' до 'float'
Это исправляет:
float currElbowAngle = LeftArm ? (float) Elbow.transform.localRotation.eulerAngles.y
: 360f - Elbow.transform.localRotation.eulerAngles.y
Итак, мой вопрос: что это за ошибка, пытающаяся связаться и что на самом деле пошло не так?
Обновление 1: Локоть - это GameObject
, и эта ошибка находится в Visual Studio
Ответы
Ответ 1
Тройной (e? a: b) оператор немного сложнее для системы типов, поскольку обеим сторонам необходимо дать одинаковый тип возврата. Я не удивлюсь, если там будет тонкая ошибка. Хорошо, что собеседники заставляют нас посмеяться время от времени.
Возможно, это исправление тоже:
float currElbowAngle = LeftArm ? 0.0f + Elbow.transform.localRotation.eulerAngles.y
: 360f - Elbow.transform.localRotation.eulerAngles.y
Я размышляю, что проблема в том, что ваша истинная ветвь - это lvalue, а ложная ветвь - rvalue. Мое обходное решение делает обе ветки rvalue.