For loop 当整数在swift中的某个范围内时,是否可以执行for循环?
当整数在swift中的某个范围内时,是否可以执行常规for循环 这就是我想要实现的目标:For loop 当整数在swift中的某个范围内时,是否可以执行for循环?,for-loop,swift,range,For Loop,Swift,Range,当整数在swift中的某个范围内时,是否可以执行常规for循环 这就是我想要实现的目标: func someFunc(var plusOrMinus:Int) { for var i:Int = 0; i == -8...8;i += plusOrMinus { } } 或: 或: func someFunc(变量plusor减号:Int){ 对于变量i:Int=0;i==;i+=加减{ } } 这些都不管用。希望你能理解这个问题,并能帮助我。:) 要检查Int是否在范围-8…
func someFunc(var plusOrMinus:Int) {
for var i:Int = 0; i == -8...8;i += plusOrMinus {
}
}
或:
或:
func someFunc(变量plusor减号:Int){
对于变量i:Int=0;i==;i+=加减{
}
}
这些都不管用。希望你能理解这个问题,并能帮助我。:) 要检查
Int
是否在范围-8…8
内,只需使用条件检查范围的两端,并将其与&
组合即可:
func someFunc(var plusOrMinus:Int) {
for var i = 0; i >= -8 && i <= 8; i += plusOrMinus {
println(i)
}
}
如果您想在…而不是C型循环中使用,您可以使用
跨步
,但请检查您要进入的方向,以确定是否需要小于或大于初始值的目标:
func someFunc(plusOrMinus: Int) {
precondition(plusOrMinus != 0)
let target = plusOrMinus > 0 ? 8 : -8
for i in stride(from: 0, through: target, by: plusOrMinus) {
println(i)
}
}
您选择的-8…8
范围是可能的,但您必须明确创建一个闭合区间,然后检查计数器是否在该区间内:
func someFunc(plusOrMinus: Int) {
let interval = -8...8 as ClosedInterval
for var i = 0; interval.contains(i); i += plusOrMinus {
println(i)
}
}
哈哈,谢谢你,我以前没有使用=in=来做这个,但那不起作用。。。当然我现在明白为什么了:DUsing
~=
和Range
应该和&
一样有效,因为它会导致..
返回ClosedInterval
,但它有点滥用~=/code>IMO,最好显式地创建ClosedInterval
。与-8…8中的i
等效的Swift将是带有范围的模式匹配运算符,compare。这实际上不是模式匹配或范围的适当使用。ClosedInterval是这里所需要的(或stride),请参见下面我的答案。啊,是的,这更好–尽管您依赖于优化器,从而消除了为循环的每个迭代创建多个ClosedInterval
。
func someFunc(var plusOrMinus:Int) {
for var i = 0; -8...8 ~= i; i += plusOrMinus {
println(i)
}
}
func someFunc(plusOrMinus: Int) {
precondition(plusOrMinus != 0)
let target = plusOrMinus > 0 ? 8 : -8
for i in stride(from: 0, through: target, by: plusOrMinus) {
println(i)
}
}
func someFunc(plusOrMinus: Int) {
let interval = -8...8 as ClosedInterval
for var i = 0; interval.contains(i); i += plusOrMinus {
println(i)
}
}