-
-
Save frozendevil/3204559eafafdf8f983b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct Grams { | |
var value : Double | |
init(_ value : Double) { | |
self.value = value | |
} | |
func __conversion() -> Kilograms { | |
return Kilograms(self.value / 1000) | |
} | |
func __conversion() -> Pounds { | |
return Pounds(self.value / 453.592) | |
} | |
} | |
struct Kilograms { | |
var value : Double | |
init(_ value : Double) { | |
self.value = value | |
} | |
func __conversion() -> Grams { | |
return Grams(self.value * 1000) | |
} | |
func __conversion() -> Pounds { | |
return Pounds(self.value / 2.20462) | |
} | |
} | |
struct Pounds { | |
var value : Double | |
init(_ value : Double) { | |
self.value = value | |
} | |
func __conversion() -> Kilograms { | |
return Kilograms(self.value / 2.20462) | |
} | |
func __conversion() -> Grams { | |
return Grams((self.value / 2.20462) * 1000) | |
} | |
} | |
let grams : Grams = Grams(12) | |
let kiolgrams : Kilograms = grams // 0.012 | |
let pounds : Pounds = grams // 0.026 | |
//similarly | |
let metricTon = Pounds(2204.62) | |
let grams2 = metricTon as Grams // 1,000,000 | |
let kilograms2 = metricTon as Kilograms // 1,000 | |
struct Meters { | |
var value : Double | |
init(_ value : Double) { | |
self.value = value | |
} | |
func __conversion() -> Cm { | |
return Cm(self.value * 100) | |
} | |
func __conversion() -> Inches { | |
return Inches(self.value * 39.3701) | |
} | |
func __conversion() -> Feet { | |
return Feet(self.value * 3.28084) | |
} | |
} | |
struct Cm { | |
var value : Double | |
init(_ value : Double) { | |
self.value = value | |
} | |
func __conversion() -> Meters { | |
return Meters(self.value / 100) | |
} | |
func __conversion() -> Inches { | |
return Inches(self.value / 2.54) | |
} | |
func __conversion() -> Feet { | |
return Feet(self.value / 30.48) | |
} | |
} | |
struct Inches { | |
var value : Double | |
init(_ value : Double) { | |
self.value = value | |
} | |
func __conversion() -> Meters { | |
return Meters(self.value / 39.3701) | |
} | |
func __conversion() -> Feet { | |
return Feet(self.value / 12) | |
} | |
func __conversion() -> Cm { | |
return Cm(self.value * 2.54) | |
} | |
} | |
struct Feet { | |
var value : Double | |
init(_ value : Double) { | |
self.value = value | |
} | |
func __conversion() -> Inches { | |
return Inches(self.value * 12) | |
} | |
func __conversion() -> Cm { | |
return Cm(self.value * 30.48) | |
} | |
func __conversion() -> Meters { | |
return Meters(self.value / 3.28084) | |
} | |
} | |
let yard : Feet = Feet(3) | |
let inches : Inches = yard // 36.0 | |
let meters : Meters = yard // 0.914 | |
let cm : Cm = yard // 91.44 | |
//similarly | |
let kilometer = Meters(1000) | |
let feet = kilometer as Feet // 3,280.84 | |
let cm2 = kilometer as Cm // 100,000 | |
let inches2 = kilometer as Inches // 39,370.1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment