2017-09-03 53 views
1

我刚开始学习Swift,遵循Apple文档。这里是一个来自文档的例子。字符串插值。打印字符串数组中的单个项目

let names = ["Anna", "Alex", "Brian", "Jack"] 
let count = names.count 
for i in 0..<count { 
    print("Person \(i + 1) is called \(names[i])") 
} 
// Person 1 is called Anna 
// Person 2 is called Alex 
// Person 3 is called Brian 
// Person 4 is called Jack 

我有打印语句查询。我不明白\(names[i]), 有人可以解释吗? 当我们遍历每个项目时,我也知道字符串插值也有一些(for in)循环。

,但我不明白\(names[i])

+0

表达'名单[I]'意味着**在列表中的第i个元素**。换句话说,该程序循环遍历“名称”的索引并为每个索引打印一条消息,例如。 “人1叫做安娜”。 – SwiftsNamesake

+0

使用类似[enumerated](https://developer.apple.com/documentation/swift/array/1687832-enumerated)的东西通常是一个好主意,它给了你一系列(索引,项目)对。 – SwiftsNamesake

+1

在章节*集合类型*段落中描述*访问和修改数组* – vadian

回答

1

当你把一些括号中是这样的:名字[3],这意味着你想从3号位的名称数组中的值。记住数组以0开头,所以第三个位置将是数组列表中的第四个数字。

我意味着你想在那里的数字改变每个循环。所以第一次循环运行时,它会像名称[0]一样运行,然后第二次运行它将像名称[1]那样运行,并且它将像这样继续,直到循环完成。

\ names [i]表示您将一个变量放在字符串中间。所以,如果你想打印您可以使用“这是一个字符串”,但如果你想在中间打印字符串变量你可以这样做一个正常的字符串:

let variable = "long variable" 

Print("this is a string with a \(variable)") 

而且它会打印出:这是一个长变量

编辑的字符串:如果你要打印在单独的线阵列的每个值有两种方法可以做到这一点。

第一个是:

For item in names 
{ 
Print(item) 
} 

或者,你可以这样做:

For i in 0..<names.count 
{ 
Print(names[i]) 
} 
+0

是的,我明白你说循环也是数组的索引。 只要清楚我一件事。 for i in 0 .. Tanzz

+0

@ martheli- 我意味着你想要为每个循环改变那里的数字。所以第一次循环运行时,它会像名称[0]一样运行,然后第二次运行它将像名称[1]那样运行,并且它将像这样继续,直到循环完成。 这个答案清除了我的困惑。(i)再次使用数组列表从0到3进行相同的循环。喜欢它与0 .. Tanzz

+0

@Tanzz我只是一个值的占位符。所以当你循环访问数组时,我改变了每个循环的值。所以首先它会是0,然后是1,然后是2,直到循环结束。我在上面的答案中增加了一些内容。 – Martheli