将Swift方法分配给变量

时间:2015-02-10 08:09:48

标签: swift

有没有办法制作方法别名?

例如,我有一个用于计算圆形的类:面积,周长等。在数学区域中写为" A",圆周为" C"并且半径为" r"但是对于普通人和代码清晰度,使用全名进行此类计算显然更好。因此,我想要班级成员" C"和班级成员"周长"基本上做同样的事情。

显而易见的方法是将方法赋值给变量......但是调用这样的方法是不必要的复杂。这是代码:

class Circle: parentClass {
    let π = M_PI

    ...

    // here I try to "alias" a method
    let C = circumference

    func circumference() -> Double {
        return 2 * self.radius * π
    }
}

现在调用方法:

let instance = Circle()

// the line below actually calls instance.circumference
// but does not look clean enough to be useful
instance.C(instance)()

有更聪明的方法吗?

1 个答案:

答案 0 :(得分:2)

我不确定这是否更优雅;但是,我确实发现它至少组织良好,最终是一个更好的API(使用属性与方法):

struct Circle {
  let π = 3.14
  var radius: Double
  var circumference: Double { return self.π * diameter() }

  init(radius: Double) {
    self.radius = radius
  }

  func diameter() -> Double {
    return self.radius * 2
  }
}

extension Circle {
  var C: Double { return self.circumference }
}

let circle = Circle(radius: 60.0)
let circumference = circle.C

println("The circumference is: \(circumference)")
//=> The circumference is: 376.8