java for in 循环_Swift for-in 循环

Swift for-in 循环

在本文中,您将了解for-in循环,其使用示例和变体。

for-in 循环用于在一定时间内运行一组任务。这些循环遍历任何序列,例如数组中的项、范围或字符串中的字符。

我们还使用for-in循环在固定的时间内执行一些重复的过程。

为什么需要for-in循环?

想象一下,有人告诉您要编写一个在屏幕上,输出Hello,World的程序!  您的解决方案将是:print("Hello, World!")

如果他们改变主意并告诉您编写一个在屏幕上输出Hello,World显示五次的程序,该怎么办?。如果没有循环知识,您的解决方案可能是:print("Hello, World!")

print("Hello, World!")

print("Hello, World!")

print("Hello, World!")

print("Hello, World!")

嗯 ,完成五次相似的代码来完成相同的工作看起来很耗时。如果是这样,如果有人要求您编写一个输出Hello,World!的程序,在屏幕上数百甚至上百万次?您将怎么办?

一种幼稚的解决方案是编写print给定次数的语句。听起来很疯狂吧?但是,通过使用for-in循环的几行代码,可以找到更好的解决方案:

示例for i in 1...100 {

//在屏幕上输出Hello World 100次

print("Hello, World!")

}

不用担心语法,我们将在下面进行探讨。

For-in循环语法

您可以在Swift中创建for in循环,如下所示:for  in  {

}

上面的循环遍历一个范围,我们可以在变量中访问从该范围返回的每个元素。 如果您不了解范围,可以查看以下文章:Swift Ranges。

它是如何工作的?被迭代的序列是一个。

将 设置为范围内的第一个数字,并执行循环内的语句 < 此处的某些工作 >

语句执行后,被更新为包含中的第二个值,并且语句 再次被执行。

该过程一直持续到到达范围的终点并停止循环。

示例1:for-in循环在Swift中的工作方式

示例for i in 1...3 {

print("Hello world!. Value is \(i)")

}

运行该程序时,输出为:Hello world!. Value is 1

Hello world!. Value is 2

Hello world!. Value is 3

在上面的程序中,要迭代的序列的范围是1到3。

i 的值设置为范围(1)中的第一个数字,并在每次迭代中更新为范围的下一个数字。这个过程一直持续到范围(3)的结束。循环内执行步骤迭代从范围(i)返回的值输出11Hello world!. Value is 1

22Hello world!. Value is 2

33Hello world!. Value is 3

在for-in循环中舍弃范围值

如果循环内没有使用范围值,则可以在Swift中使用(下划线 _)丢弃,如下所示:for _ in  {

}

示例2:在for-in循环中丢弃范围值

示例//本示例忽略值并使用半开范围运算符

for _ in 1..<3 {

print("Hello world!")

}

运行该程序时,输出为:Hello world!

Hello world!

在上面的程序中,由于使用半开范围运算符(..

下划线 _ 忽略范围(1)中的值,并执行print语句。 再次调用print语句进行下一次迭代,并且过程结束,因为2是该范围内的最后一个值。不带范围值的for-in循环执行步骤迭代从范围返回的值输出1丢弃Hello world!

2丢弃Hello world!

使用固定间隔的for-in循环

如果要使循环在每次迭代中以某个固定值(而不是范围)递增,则必须使用stride方法。

示例3:使用stride的for-in循环

示例let interval = 2

for i in stride(from: 1, to: 10, by: interval) {

print(i)

}

运行该程序时,输出为:1

3

5

7

9

在上面的程序中,该stride函数返回数字序列:1、3、5、7、9。

i的值设置为序列(1)的第一个数字,并执行循环内的print语句,该语句在控制台中输出“ 1”。

执行该语句后,将i的值更新为另一个值(3),并再次调用print语句。该过程一直持续到访问序列中的所有元素为止。使用 stride 执行循环内执行步骤值条件(Value < End)i (输出)11 < 10 (true)1

1 + 2 = 33 < 10 (true)3

1 + 2 * 2 = 55 < 10 (true)5

1 + 3 * 2 = 77 < 10 (true)7

1 + 4 * 2 = 99 < 10 (true)9

1 + 5 * 2 = 1111 < 10 (false)Stops

如何使用for-in循环访问集合的元素?

假设您有一个字符串数组,如下所示。如果您不了解数组,可以将数组视为可以存储多个值的单个容器。有关更多详细说明,请参见Swift 数组。let programmingLanguages = ["Swift", "Java", "Go","JavaScript","Kotlin","Python"]

如果有人告诉您打印所有编程语言该怎么办?

一种方法是使用索引值 programmingLanguages[0], programmingLanguages[1]... 来访问这些元素,依此类推,直到获得所有元素。但这太繁琐了。

所以循环派上用场了。您可以使用for in循环进行迭代:

示例4:使用for-in循环访问数组(集合)的元素

示例let programmingLanguages = ["Swift", "Java", "Go", "JavaScript", "Kotlin", "Python"]

for language in programmingLanguages {

print(language)

}

运行该程序时,输出为:Swift

Java

Go

JavaScript

Kotlin

Python

在上面的程序中,要迭代的序列是一个字符串数组。

language 的值设置为数组的第一个元素,并执行循环内的print语句,该语句在控制台中输出“ Swift”。

语句执行后,language 将使用数组的下一个元素进行更新,并再次调用print语句。这个过程一直持续到访问数组的最后一个元素为止。

示例5:使用for-in循环访问字符串(集合)的元素

由于在Swift中字符串也是集合,因此您可以使用for循环访问字符串中的每个字符。

示例for value in "I♥Swift!" {

print(value)

}

运行该程序时,输出为:I

S

w

i

f

t

!

如何使用for-in循环访问集合的索引?

如果要访问数组的索引(数组中元素的位置,即0、1、2),则需要使用 enumerated 方法:

示例6:使用for-in循环访问数组的索引

示例let programmingLanguages = ["Swift", "Java", "Go", "JavaScript", "Kotlin", "Python"]

for (index, language) in programmingLanguages.enumerated() {

print("\(index):\(language)")

}

运行该程序时,输出为:0:Swift

1:Java

2:Go

3:JavaScript

4:Kotlin

5:Python

在此,枚举方法返回数组中每个项目的由索引(Int)和值(String)组成的元组(Int, String)。例如:(0,Swift),(1,Java)

使用 for-in 循环,您可以逐个访问元组中的这些项。如果您不知道 Tuple(元组),那么您可以简单地将它看作一个容器,它可以容纳不同类型的值。

如何在for-in循环中使用where子句过滤元素?

您还可以使用where子句将for循环中的内容过滤掉

示例for value in "I♥Swift!" where value != "!" {

print(value) //删除感叹号

}

运行该程序时,输出为:I

S

w

i

f

t

在上面的程序中,要迭代的序列是字符串(字符集合)。

value 设置为字符串的第一个字符,并使用where条件进行检查。如果条件返回true,则执行循环内的块(打印语句),该块在控制定台中输出“ I”。

语句执行后,value 将更新为字符串的下一个字符,然后再次检查条件。如果条件返回 false,则不执行该块,value 并更新为下一个字符。

该过程一直持续到访问字符串的最后一个字符为止。使用for-in循环执行步骤进行过滤迭代valuevalue != “!”输出1ItrueI

2♥true♥

3StrueS

4wtruew

5itruei

6ftruef

7ttruet

8!false

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值