【发布时间】:2015-04-22 22:30:36
【问题描述】:
我想要做的是使用从start 到end 连续的任何整数数组运行“fizzbizz”函数,然后根据下面的每种情况输出一个对象数组,整数或字符串。
在这个例子中,我试图在一个数组上运行函数,该数组从整数 1 的 start 到整数 15 的 end。
随着 fizzbuzz 函数的运行,对于该范围内的每个整数,我想检查它是否可以被 3 和/或 5 整除。如果它可以被 3 而不是 5 整除,我想返回“Fizz”,如果它不能被 3 整除,而是被 5 整除,我想返回“Buzz”,依此类推。
我无法弄清楚如何设置 numsarray 以包含函数的两个输入之间的所有数字 start 和 end,我在下面的数组中拥有的是伪代码。当我用一组特定数字尝试它时,每个case 中的所有returns 都会给我一个错误,指出我无法将该表达式转换为[Any] 类型的表达式。
我使用[Any] 是因为我会将整数和字符串都推送到数组中,所以我不想让它成为一种特定类型。
func fizzinAndBuzzin(start: Int, end: Int) -> [Any]{
let numsarray = [start...end]
for number in numsarray {
switch (number % 3 == 0, number % 5 == 0) {
case (true, false):
return "Fizz"
case (false, true):
return "Buzz"
case (true, true):
return "FizzBuzz"
default:
return int(start)
}
}
}
fizzinAndBuzzin(1, 15)
【问题讨论】:
-
遍历数组中的所有数字是没有意义的,因为无论如何你都将在循环的第一次迭代中转到
return... -
@nhgrif 这是一个很好的观点。有什么更好的方法来做到这一点?