如何使用 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
我收到了以下任务:制作名称为 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