我有两个文件。其中有一个课程内容:
class RelativeStrength: NSObject {
func calculateRSI() {
let relativeStrength1 = 87652
let relativeStrength2 = 5634
let rSI1 = 100 - (100 / (relativeStrength1 + 456))
let rSI2 = 100 - (100 / (relativeStrength2 + 12))
let average = (rSI1 + rSI2) / 2
}
}
另一个我想访问average
以在其他计算中使用它的地方。那可能吗?
答案 0 :(得分:0)
您可以average
成为RelativeStrength
类中的静态变量。
class RelativeStrength: NSObject {
static var average: Double = 0
func calculateRSI() {
let relativeStrength1 = 87652
let relativeStrength2 = 5634
let rSI1 = 100 - (100 / (relativeStrength1 + 456))
let rSI2 = 100 - (100 / (relativeStrength2 + 12))
average = (rSI1 + rSI2) / 2
}
}
然后在您的其他课程中,您可以直接引用该平均值:
class OtherClass: NSObject {
var randomVar = 0
func setRandomVar() {
randomVar = RelativeStrength.average
}
}
如果您希望在其他课程中使用calculateRSI
函数,则只需将static
添加到函数名称中,并以相同的方式使用它。
答案 1 :(得分:0)
您也可以使用计算属性。与计算属性的唯一区别在于,出于这种原因,它们看起来更整洁。
class RelativeStrength: NSObject {
var rsi: Int {
let relativeStrength1 = 87652
let relativeStrength2 = 5634
let rSI1 = 100 - (100 / (relativeStrength1 + 456))
let rSI2 = 100 - (100 / (relativeStrength2 + 12))
return (rSI1 + rSI2) / 2
}
}
然后:
let average = RelativeStrength().rsi
print(average)
答案 2 :(得分:-1)
class RelativeStrength: NSObject {
func calculateRSI() -> CGFloat {
let relativeStrength1 = 87652
let relativeStrength2 = 5634
let rSI1 = 100 - (100 / (relativeStrength1 + 456))
let rSI2 = 100 - (100 / (relativeStrength2 + 12))
let average = (rSI1 + rSI2) / 2
return average
}
}
class OtherClass: NSObject {
let average = RelativeStrength().calculateRSI()
print(average)
}
或者你可以使用代表
protocol InformingDelegate {
func averageChanged(average: CGFloat)
}
class RelativeStrength: NSObject {
func calculateRSI() {
var delegate = InformingDelegate?
let relativeStrength1 = 87652
let relativeStrength2 = 5634
let rSI1 = 100 - (100 / (relativeStrength1 + 456))
let rSI2 = 100 - (100 / (relativeStrength2 + 12))
let average = (rSI1 + rSI2) / 2
delegate?.averageChanged(average: average)
}
class OtherClass: NSObject, InformingDelegate {
func averageChanged(average: CGFloat) {
print(average)
}
}
}