需要澄清在 Swift 中对文字使用点符号
Need clarification on using dot-notation on literals in Swift
所以我正在阅读 Swift 文档中有关 Class 扩展的信息。我了解 class 扩展的目的和功能。然后,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"
有人可以解释为什么以及如何在浮点文字上使用 点符号 吗?
在上面的示例中,他们在值 25.4 和 3 上使用点表示法来访问 Double [=25] 的计算属性=]. Apple 没有详细解释为什么可以这样做。
Swift 的字面量敞篷车使这成为可能:
http://nshipster.com/swift-literal-convertible/
正如伟大的马特·汤普森在那篇文章底部附近指出的那样:
One neat feature of literal convertibles is that the type inference
works even without a variable declaration:
"http://nshipster.com/".host // nshipster.com
所以我正在阅读 Swift 文档中有关 Class 扩展的信息。我了解 class 扩展的目的和功能。然后,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"
有人可以解释为什么以及如何在浮点文字上使用 点符号 吗?
在上面的示例中,他们在值 25.4 和 3 上使用点表示法来访问 Double [=25] 的计算属性=]. Apple 没有详细解释为什么可以这样做。
Swift 的字面量敞篷车使这成为可能:
http://nshipster.com/swift-literal-convertible/
正如伟大的马特·汤普森在那篇文章底部附近指出的那样:
One neat feature of literal convertibles is that the type inference works even without a variable declaration:
"http://nshipster.com/".host // nshipster.com