2015-08-08 3 views
1

Начинал обучение Swift в начале этой недели, и я делаю некоторые быстрые практики, чтобы изучить его.Не удалось найти перегрузку для '*', которая принимает предоставленные аргументы

Я пытаюсь преобразовать в градусы Цельсия Фаренгейт, это то, что у меня есть:

var tempInCelcius = 30 

    var tempInFarenheit = tempInCelcius * 1.8 + 32 

Однако я получаю ошибку ниже:

error: could not find an overload for '*' that accepts the supplied arguments 

Я пропускаю что-то действительно очевидное здесь?

ответ

1

tempInCelcius объявлен как Int (тип по умолчанию для целых литералов).
1.8 определяется как Double.

В Swift вы не можете выполнять математику с разными типами.

Решение это объявить tempInCelcius явно

var tempInCelcius : Double = 30 

или неявно

var tempInCelcius = 30.0 

в Double. Затем выполняется умножение.

var tempInFahrenheit = tempInCelcius * 1.8 + 32 

В отличие от переменных буквенные номера, как 32 должны особого типа и выводятся в соответствующий тип операции (если это возможно)

Смежные вопросы

 Смежные вопросы