字符串插值解析无法正常工作

时间:2018-10-04 14:43:42

标签: ios swift compiler-errors string-interpolation

在带有Swift 4.2的Xcode 10中,我有以下简单,新鲜的单视图项目

我在第一个字符串的字符串插值中引入了一个错字,但是编译器没有抱怨并且代码可以运行。

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

它将第一个参数作为“(函数)”,并将括号内的其余文本报告为文本的一部分,但编辑器未将其显示为文本。 字符串插值语法中有我不了解的内容吗?还是这是编译器问题/错误?

Thx

1 个答案:

答案 0 :(得分:3)

它完全显示您的要求。您正在评估:

(number.numberString, withValue: false)

这是一个具有未标记函数值和标记布尔值的元组。该元组的描述为:

((Function), withValue: false)