Ошибка компилятора Swift: невозможно преобразовать значение типа '()' в указанный тип 'String' - PullRequest
0 голосов
/ 14 февраля 2020

Я использую игровые площадки Swift и узнаю о параметрах в уроке 9 Введение в Swift .

func sing(verb: String, noun: String) {
    print("\(verb), \(verb), \(verb) your \(noun)")
}

let line = sing(verb: "Row", noun: "Boat")

Последняя строка выдает мне это предупреждение:

Константа 'line' подразумевает тип '()', что может быть неожиданным.

Когда я явно определяю константу как String - let line: String = sing(verb: "Row", noun: "Boat") - я получаю следующую ошибку:

ошибка: невозможно преобразовать значение типа '()' в указанный тип 'String'

Я не уверен, что делать, чтобы решить эту проблему.

Примечание: если у вас есть предложения, как сделать функцию более похожей на предложение, я буду признателен за это!

1 Ответ

0 голосов
/ 14 февраля 2020

Ваша функция sing() не возвращает объект String.

Следовательно, вы не можете использовать variable = void function(), поскольку это недопустимая операция присваивания.

Вы можете указать String в качестве типа возврата sing() и вернуть строку, которую вы печатаете в функции. Это решит вашу проблему.

func sing(verb: String, noun: String) -> String {   
  return "\(verb), \(verb), \(verb) your \(noun)"     
}

let line = sing(verb: "Row", noun: "Boat")
...