如何使用 public 方法创建 class 打印 Swift 中从 11 开始的三个奇数?

How to create class with public method that prints three odd numbers starting from 11 in Swift?

我收到了以下任务:制作名称为 OddNumber 的 Class 接受数字的构造函数,从中开始写入三个奇数 - 从数字 11 开始。这个 Class 应该有一个 public 名称为 getNextNumber 的方法 - 每次调用时,它都会 returns 下一个奇数(因此必须记住最后一个才能返回下一个)。来自任务的伪代码:

object = new OddNumber(11)
for i in 1...3
    print(object.getNextNumber())

我自己找不到解决方案,只“镜像”了一个解释了 类 的代码示例。你能帮忙,如何简化/缩短代码?

class Range {
    var numberX = 9

    func printNumber() {
        print(numberX)
    }

    func getNextNumber(increase two: Int) {
        numberX += two
    }
}

class Counter {
    var range: Range?
    func countUp() {
        if range != nil {
            print("range exists")
        }
    }
}

class OddNumber: Counter {
    override func countUp() {
        range?.getNextNumber(increase: +2)
    }
}

var myRange = Range()

let output = OddNumber()
output.range = myRange

for _ in 1...3 {
    output.countUp()
    output.range?.printNumber()
}

您需要首先检查最后一个值是否是 2 的倍数。如果为真,只需将最后一个值增加 1,否则将其增加 2,然后 return。类似于:

class OddNumber {
    var lastValue: Int
    init(_ lastValue: Int) {
        self.lastValue = lastValue
    }
    public func getNextNumber() -> Int {
        lastValue += lastValue.isMultiple(of: 2) ? 1 : 2
        return lastValue
    }
}

游乐场测试:

let object = OddNumber(11)
for _ in 1...3 {
    print(object.getNextNumber())  // 13, 15, 17
}

另一种选择是将最后一个取余运算符的结果加二(也称为取模运算符)加一:

lastValue += lastValue % 2 + 1