我收到了以下任務:創建一個名為 OddNumber 的類,它接受數字到它的建構式,從它開始寫入三個奇數 - 從數字 11 開始。這個類應該有一個名為 getNextNumber 的公共方法 - 每次呼叫它時,它都會回傳下一個奇數(因此必須記住最后一個以回傳下一個)。來自任務的偽代碼:
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()
}
uj5u.com熱心網友回復:
您需要首先檢查最后一個值是否是 2 的倍數。如果為真,則將最后一個值加一,否則將其加二并回傳。就像是:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/396922.html
下一篇:從同一個父類的另一個類訪問物件
