- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法理解这段代码,我需要很少的帮助。下面的例子来自 swift 标准库。此示例遍历集合的 indices
和 elements
,构建一个由 indices
名称组成的列表,字母不超过五个。
let names: Set = ["Sofia", "Camilla", "Martina", "Mateo", "Nicolás"]
var shorterIndices: [SetIndex<String>] = []
for (i, name) in zip(names.indices, names) {
if name.count <= 5 {
shorterIndices.append(i)
}
}
现在 shorterIndices
数组包含名称集中较短名称的 indices
,您可以使用这些 indices
访问 集合中的元素
。
for i in shorterIndices {
print(names[i])
}
// Prints "Sofia"
// Prints "Mateo"
在第一组代码中,if
语句如何计算字母不超过五个的名字。因为 name.count
是 5
。和 shorterIndices.append(i)
包括 names
Set 的每个值。我是编程新手,我无法理解这个例子。有人可以逐行解释吗?
@vacawama 检查一下:
let names: Set = ["Sofia", "Camilla", "Martina", "Mateo", "Nicolás"]
for (i, name) in zip(names.indices, names) {
print("\(names[i]): \(name.count)")
}
//prints
Nicolás: 7
Martina: 7
Camilla: 7
Mateo: 5
Sofia: 5
现在检查这个
let names: Set = ["Sofia", "Camilla", "Martina", "Mateo", "Nicolás"]
for (i, name) in zip(names, names) {
print("\(i): \(name.count)")
}
//prints
Nicolás: 7
Martina: 7
Camilla: 7
Mateo: 5
Sofia: 5
最佳答案
理解这段代码的关键是理解zip
是什么做。它从两个单独的序列创建一个元组对序列。如果您选择单击 zip
在 Xcode 中,它提供了这个例子:
let words = ["one", "two", "three", "four"]
let numbers = 1...4
for (word, number) in zip(words, numbers) {
print("\(word): \(number)")
}
// Prints "one: 1"
// Prints "two: 2
// Prints "three: 3"
// Prints "four: 4"
从逻辑上讲,zip
创建一个序列,如果将其转换为数组,则为 [("one", 1), ("two", 2), ("three", 3), ("four", 4)]
.然后 for (word, number)
loop 依次获取每个元组并将一个单词分配给 word
和一个数字 number
.第一次通过循环,word
是"one"
和 number
是1
.
在您的例子中,由 zip(names.indices, names)
创建的元组对包含集合中的索引和集合中的名称。 for 循环查看一个 (index, name)
一次配对。
第一次通过循环,name
是"Sofia"
和 i
是 "Sofia"
的索引在集合中。
如果"Sofia"
的长度是<= 5
它的索引被添加到新数组中。在这种情况下 name.count
是5
因为"Sofia"
有5
字母,所以它的索引确实被添加了。
集合没有排序,因此名称可能不会按照您期望的确切顺序迭代,但每个名称都与其正确的索引配对。将您的 for 循环更改为:
for (i, name) in zip(names.indices, names) {
print("name = \(name)")
print("name.count = \(name.count)")
print("names[i] = \(names[i])")
print("-----")
}
看看发生了什么。当我这样做时,我得到了:
name = Nicolás
name.count = 7
names[i] = Nicolás
-----
name = Martina
name.count = 7
names[i] = Martina
-----
name = Camilla
name.count = 7
names[i] = Camilla
-----
name = Mateo
name.count = 5
names[i] = Mateo
-----
name = Sofia
name.count = 5
names[i] = Sofia
-----
注意 names[i]
与 name
相同因为索引 i
进入Set
与名称相对应。当此索引附加到 shorterIndices
时数组,稍后可以使用它从 Set 中检索名称。
关于swift - 使用 enumerated , zip 方法并迭代索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47376516/
挖掘这个,这是一个很酷的 Enumerator(惰性序列)从 1 到(Ruby 可以表示的最大 Float): 1.9.3-p327 :014 > e = (1..Float::INFINITY).e
这个问题在这里已经有了答案: Swift 2.0 : 'enumerate' is unavailable: call the 'enumerate()' method on the sequenc
我不确定这是否特定于 ML.NET,但它确实发生在 ML.NET 的上下文中。 我正在使用 ML.NET 对一些图像进行分类。我意识到,无论我是否对结果 IEnumerable 调用 .ToArray
在Collections Framework中,我们有Iterator和ListIterator接口(interface),它们用于迭代数据结构。它们提供了完整的迭代功能。但我想知道为什么 JDK 在
我正在使用 playframework 的异步 I/O 库,它使用 Iteratees 和 Enumerators。我现在有一个 Iterator[T] 作为数据接收器(为简单起见,说它是一个 Ite
更新: private final java.util.Properties tilesPropertyMap = new Properties(); private class Delegati
所以,我有一个像这样的字符串 \begin{enumerate} \item My first item \item My second item \end{enumerate} 并且需要使用正则表达
我有一个数组a = [1, 2, 3, 4, 5] 如果我在数组中有一个元素,我可以通过a[0].next 有没有一种方法可以用来找到前一个元素a[1].previous 或 a[1].before
是否Enumerable#group_by保留每个值内的原始顺序?当我得到这个时: [1, 2, 3, 4, 5].group_by{|i| i % 2} # => {1=>[1, 3, 5], 0=
我已经基于现有的NativeHashMap.Enumerator和UnSafeHashMap.Enumerator结构编写了枚举数,它们以猝发方式工作,但在尝试为嵌套的非托管结构组合枚举数时遇到了麻烦
在 C# 中使用迭代器创建 Enumerable 或 Enumerator 有什么区别?我知道迭代器用于创建实现 Enumerable 或 Enumerator 的私有(private)类... 哪种
自 C++11 过渡以来,GCC 输出警告“条件表达式中的枚举和非枚举类型”。我想了解此警告背后的原因。比较枚举常量有什么危险? 很明显我们可以通过以下方式摆脱这个警告 -Wno-enum-compa
我在 LINQ 查询的性能方面遇到问题,因此我创建了一个简化的小示例来演示下面的问题。该代码采用一个随机的小整数列表,并返回分成几个较小列表的列表,每个列表总计 10 个或更少。 问题是(正如我所写的
我一直对 Enumerable#all? 和 Enumerable#each 的用例感到困惑。例如 ['.txt', '-hello.txt'].all? do |suffix| pu
Enumerable documentation没有明确说明 each 是 each_entry 的别名,但是 each_entry 的描述与我对 each 1 [1, 2] nil Foo.new.
在这段代码中,我创建了一个字符串数组“1”到“10000”: array_of_strings = (1..10000).collect {|i| String(i)} Ruby Core API 是
我正在为我的代码寻求一些帮助,如下所示: for file in file_name : if os.path.isfile(file): for line_number, l
刚刚下载了 Xcode 7 Beta,此错误出现在 enumerate 关键字上。 for (index, string) in enumerate(mySwiftStringArray) { } 谁
刚刚下载了 Xcode 7 Beta,这个错误出现在 enumerate 关键字上。 for (index, string) in enumerate(mySwiftStringArray) { }
为了清楚起见,假设我们有学生和类(class),这是多对多的关系。 我有一个字典,其中键是学生 ID,而 Enumerable 是一个类的集合(假设我们只有 id ),我想将其恢复为 classId、
我是一名优秀的程序员,十分优秀!