代码之家  ›  专栏  ›  技术社区  ›  Senseful

Swift中的String(int)和int描述之间的区别?

  •  0
  • Senseful  · 技术社区  · 3 年前

    我理解 difference between String(describing: int) and String(int)

    然而,我不确定两者之间有什么区别 字符串(int) int.description (甚至 "\(int)" 为此)。

    这些函数总是会返回相同的值吗?

    let int: Int = 123
    let string1 = String(int)
    let string2 = int.description
    assert(string1 == string2)
    

    在这个简单的例子中,它表明它们是一样的,但我想知道它们是否有不同的时候,或者是否有其他原因我可能想避免其中之一。

    我明白了 字符串(int) 使用了很多,但另一个版本更容易使用 Int? 值:

    let optionalString = optionalInt?.description
    
    0 回复  |  直到 3 年前
        1
  •  1
  •   Leo Dabus    3 年前

    不同之处在于,您不应该使用描述方法。注意,对于整数,描述结果可能永远不会改变,但对于其他类型,则无法保证。例如 Data 几年前曾经有过不同的描述。顺便说一句,如果你使用 String(describing: optionalInt) 或optionalInt的字符串插值,它将导致Optional(“whatever”)

    不鼓励继续使用描述方法。检查 CustomStringConvertible description 如果需要,可以创建一个可以扩展的计算特性 LosslessStringConvertible 并创建字符串属性。它将允许您使用符合它的所有类型:

    extension LosslessStringConvertible {
        var string: String { .init(self) }
    }
    

    用法:

    1.string     // "1"
    2.5.string   // "2.5"