Skip to content

Instantly share code, notes, and snippets.

@frozendevil
Last active August 29, 2015 14:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save frozendevil/3204559eafafdf8f983b to your computer and use it in GitHub Desktop.
Save frozendevil/3204559eafafdf8f983b to your computer and use it in GitHub Desktop.
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