It just occurred to me that types and functions are equivalent in the sense that one can declare a type in the form of a function. I’d never thought of it this way.
struct Circle {
let radius: Double
func area() -> Double {
.pi * radius * radius
}
func perimeter() -> Double {
2 * .pi * radius
}
}
let circle = Circle(radius: 5)
circle.radius // 5.0
circle.area() // 78.54
circle.perimeter() // 31.42func makeCircle(radius: Double) -> (
radius: () -> Double,
area: () -> Double,
perimeter: () -> Double
) {
func getRadius() -> Double { radius }
func area() -> Double { .pi * radius * radius }
func perimeter() -> Double { 2 * .pi * radius }
return (getRadius, area, perimeter)
}
let circle = makeCircle(radius: 5)
circle.radius() // 5.0
circle.area() // 78.54
circle.perimeter() // 31.42