【问题标题】:String interpolation parsing not working properly字符串插值解析无法正常工作
【发布时间】:2018-10-04 14:43:41
【问题描述】:

我在带有 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

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

谢谢

【问题讨论】:

    标签: ios swift compiler-errors string-interpolation


    【解决方案1】:

    它准确地显示了您的要求。您正在评估:

    (number.numberString, withValue: false)

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

    ((Function), withValue: false)

    【讨论】:

    • Upsss....@Rob Napier。我没有考虑元组选项。另外,我不知道您可以在没有括号的情况下评估函数(我假设您必须执行以下操作: number.numberString() 并且返回值是正在评估的内容.....我学到了一些东西.谢谢很多... ...恩里克
    猜你喜欢
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    相关资源
    最近更新 更多