2015-08-06 7 views
0

Итак, я читаю о расширениях классов в документации Swift. Я понимаю цель и функциональность расширений класса. Затем, Apple предоставляет этот пример того, как расширить существующий тип:Нужно уточнить использование точечных обозначений в литералах в Swift

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 и , чтобы получить доступ к вычисляемым свойствам двойного класса. Apple не дает подробного объяснения, почему это можно сделать.

ответ

3

Это стало возможным благодаря буквальным кабриолетов Свифта:

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

Как великий Мэтт Томпсон отмечает в нижней части этой статьи:

Один аккуратный особенность буквального кабриолетов является то, что тип вывода работает даже без объявления переменной:

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

+0

Woaw! Спасибо тебе за это! Почему это не в документации Swift? лол. В любом случае, спасибо, что ответили на мой вопрос. Кстати, какую дополнительную быструю документацию вы рекомендуете. Теперь кажется, что я не смогу узнать все о быстром, если я просто использую собственную документацию Apple. –

+0

Есть некоторые настоящие умные люди с блогами и книгами: [NS Hipster] (http://www.nshipster.com), [Practical Swift] (http://www.practicalswift.com) и [Скорость воздуха Velocity] (http://www.airspeedvelocity.net) - мои любимые. –

 Смежные вопросы

  • Нет связанных вопросов^_^