Не работает синтаксический анализ строки
У меня есть следующий простой, свежий проект с одним представлением в Xcode 10 с Swift 4.2
Я ввел опечатку в строке интерполяции первой строки, но компилятор не жалуется, и код выполняется.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let number: Int = 50
var string = "\(number.numberString, withValue: false) lbs"
print(string)
string = "\(number.numberString(withValue: false)) lbs"
print(string)
}
}
extension Int {
func numberString(withValue value: Bool) -> String {
if value == true {
return "value"
} else {
return String(self)
}
}
}
распечатка:
((Function), withValue: false) lbs
50 lbs
Он принимает первый параметр как "(Функция)" и сообщает об остальном тексте в круглых скобках как о части текста, но редактор не показывает его как текст. Что-то я не понимаю в синтаксисе интерполяции строк? или это проблема / ошибка?
Спасибо
1 ответ
Решение
Он отображает именно то, что вы запрашиваете. Вы оцениваете:
(number.numberString, withValue: false)
Это кортеж с немаркированным значением функции и помеченным логическим значением. Описание этого кортежа будет следующим:
((Function), withValue: false)