【问题标题】:Need clarification on using dot-notation on literals in Swift需要澄清在 Swift 中对文字使用点表示法
【发布时间】:2015-10-30 07:07:32
【问题描述】:

所以我正在阅读 Swift 文档中的类扩展。我了解类扩展的目的和功能。然后,Apple 提供了如何扩展现有类型的示例:

extension Double {
    var km: Double { return self * 1_000.0 }
    var m: Double { return self }
    var cm: Double { return self / 100.0 }
    var mm: Double { return self / 1_000.0 }
    var ft: Double { return self / 3.28084 }
}

let oneInch = 25.4.mm
println("One inch is \(oneInch) meters")
// prints "One inch is 0.0254 meters"

let threeFeet = 3.ft
println("Three feet is \(threeFeet) meters")
// prints "Three feet is 0.914399970739201 meters"

有人可以解释为什么以及如何在浮点文字上使用 dot notation 吗?

在上面的示例中,他们在值 25.43 上使用点符号来访问 Double 类的计算属性。 Apple 没有详细解释为什么可以这样做。

【问题讨论】:

    标签: swift class-extensions computed-properties


    【解决方案1】:

    这可以通过 Swift 的字面转换实现:

    http://nshipster.com/swift-literal-convertible/

    正如伟大的马特·汤普森在文章底部附近所说:

    字面量可转换的一个简洁特性是类型推断 即使没有变量声明也可以工作:

    "http://nshipster.com/".host // nshipster.com

    【讨论】:

    • 哇!这次真是万分感谢!为什么这不在 Swift 文档中?哈哈。不管怎样,谢谢你回答我的问题。顺便说一句,你推荐什么额外的 swift 文档。现在看来,如果我只使用 Apple 自己的文档,我将无法了解有关 swift 的所有内容。
    • 有一些真正聪明的人有博客和书籍:NS HipsterPractical SwiftAir Speed Velocity 是我的最爱。
    • @WalterM 嗯,我认为这不值得一提,尤其是早期。双重是双重是双重的事实并不奇怪。相反,其他语言不支持方法等的事实,无论是在他们的文字表示或其他方面,令人惊讶。这种任意限制没有理由
    猜你喜欢
    • 1970-01-01
    • 2012-04-29
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 2012-07-18
    • 1970-01-01
    相关资源
    最近更新 更多