为什么在Swift中使用通配符?

为什么在Swift中使用通配符?,swift,for-loop,iterator,wildcard,operator-keyword,Swift,For Loop,Iterator,Wildcard,Operator Keyword,翻阅苹果公司关于Swift的文档,我设计了一个for循环,创建了5个按钮,在5星级功能中充当星级 我注意到for循环的构造如下: for _ in 0...<5 在对此的解释中,Apple提到,当您不需要知道循环的哪个迭代正在执行时,可以使用通配符运算符 但是不知道迭代有什么好处呢?这是一个节省内存的问题吗?是否有过您不想知道迭代的场景 for循环索引需要存储在内存中,因此这不会用作任何内存优化 我认为最重要的是,它很容易向代码读者传达循环索引并不重要的信息 此外,它还可以防止您产生一

翻阅苹果公司关于Swift的文档,我设计了一个for循环,创建了5个按钮,在5星级功能中充当星级

我注意到for循环的构造如下:

for _ in 0...<5 
在对此的解释中,Apple提到,当您不需要知道循环的哪个迭代正在执行时,可以使用通配符运算符

但是不知道迭代有什么好处呢?这是一个节省内存的问题吗?是否有过您不想知道迭代的场景

for循环索引需要存储在内存中,因此这不会用作任何内存优化

我认为最重要的是,它很容易向代码读者传达循环索引并不重要的信息


此外,它还可以防止您产生一些任意的伪变量名。当您在循环内部调试时,它还会将名称空间分离,因为不会显示此虚拟变量。

通常,未使用的变量会给代码增加语义开销。当有人阅读您的代码时,他们需要努力理解每一行和标识符的功能,以便准确预测更改代码的影响。通配符运算符允许您传达语言语法所需的值与后面的代码无关,事实上甚至不被引用


在您的特定示例中,循环可能需要执行一定次数,但是如果您希望在每次迭代中执行完全相同的操作,那么迭代计数是不相关的。这并不常见,但确实发生过。在这种情况下,语义开销很低,但从一开始就明确表示每次都打算做同样的事情是有意义的,从广义上讲,这是一个好习惯

这不一定与了解迭代有关。当您不需要知道循环中的元素时,您正在迭代。下划线就是那个占位符——就像下划线是声明中的符号一样,禁止名称的外部化。查看更多关于此的详细信息

是否有过您不想知道迭代的场景

当然可以。考虑:

func echo(_ s:String, times:Int) -> String {
    var result = ""
    for _ in 1...times { result += s }
    return result
}

您将如何编写它?

如果您只想运行一次以上的内容,可能会这样做?由于链接到另一个线程,有时会发生。Repeatcount:times,repeatedValue:s.joinWithSeparator SCNR:@MartinR sssh!:0怎么样?@vacawama让我想起了在扁平化之前我是如何使用reduce的@马特,为什么第一个参数是u?这不是默认的行为吗?