- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道有关 Swift 2.2 中非 +1 递增迭代器循环的最佳解决方案,因为旧样式现已弃用:
for (var i = 0; i < planets.count; i += 1) {
let string = planets[i]
if (string == "Venus" || string == "Saturn") {
i += 2
}
}
我的第一个解决方案是使用有效的while
var i = 0
while i < planets.count {
let string = planets[i]
if (string == "Venus" || string == "Saturn") {
i += 2
}
i += 1
}
但是在整个代码中多次使用它并不是很方便。所以我创建了一个数组扩展,它似乎也可以工作:
extension Array {
func loopIncrement(callback: (inout i: Int) -> ()) {
var index: Int = 0
while index < self.count {
callback(i: &index)
index += 1
}
}
func loopDecrement(callback: (inout i: Int) -> ()) {
var index: Int = self.count - 1
while index >= 0 {
callback(i: &index)
index -= 1
}
}
}
像这样使用它:
planets.loopIncrement { (i) in
let string = planets[i]
if (string == "Venus" || string == "Saturn") {
i += 2
}
}
planets.loopDecrement { (i) in
let string = planets[i]
if (string == "Venus" || string == "Saturn") {
i -= 2
}
}
目前这很好,但我确信有一种更快捷的方法来解决这个问题。
所以让我们在这里开始讨论。非常感谢任何帮助!
如果您想查看的话,这是 Playground 文件:NonPlusOneIncrementLoops.playground
示例:
在下面的示例中,您可以看到哪里需要实时更改循环索引。有一个 printObject
数组,其中包含 PrintObject
类,这些类定义其 printText
应打印到调试区域的次数。 printCount
属性是随机生成的,因此在循环之前是未知的。
class PrintObject {
var printCount: Int = 0
var printText: String = "<Missing>"
}
var printObjects = [PrintObject]()
for i in 0...6 {
let randomCount = Int(arc4random_uniform(2)) + 1
let printObject = PrintObject()
printObject.printCount = randomCount
printObject.printText = "This is line \(i)"
printObjects.append(printObject)
}
printObjects.loopIncrement { (i) in
let printObject = printObjects[i]
printObject.printCount -= 1
if printObject.printCount > 0 {
i -= 1
}
print(printObject.printText)
}
这显然是一个简单的示例,但它可能会让某些人更清楚在哪些情况下更改循环索引是有意义的。
最佳答案
如果您只想要每第二个元素
evens = Array(1...10).filter { $0 % 2 == 0 }
代码过于冗长
func isEven(number: Int) -> Bool {
return number % 2 == 0
}
evens = Array(1...10).filter(isEven)
关于arrays - swift 2.2 : Non +1 increasing iterator loops,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36217423/
我正在使用 gmock 并模拟了一个函数 boost::beast::http::response_parser作为输出参数。功能签名看起来像: error_code readFromSocket(b
我的任务是打印由“非元音、元音、非元音”组成的单词列表,即 bab、bac、bad、bad ... 到 zuz。 我已经设法创建了一个代码,它执行前两个字母,但在最后一个循环中丢失并只打印'}' -
我正在尝试使用 label2rgb 生成 RGB 标签切片并使用它来更新 RGB 体积,如下所示: labelRGB_slice=label2rgb(handles.label(:,:,han
我有一个很奇怪的问题。我在 dll 中定义了一个接口(interface),如下所示: public interface IKreator2 { string Name { get; set;
在我的 openshift Drupal 托管中,网络都在 SSL 下 http://domain.com -> https://www.domain.com 确定 http://www.domain
我收到警告“退出构造函数时不可为空的事件‘SomeEvent’必须包含非空值。考虑将事件声明为可空。” 这是我的代码的一个非常简化的版本,它复制了完全相同的问题。我在这里错过了什么?这与 .Net 6
在一次大学考试中,我被要求测试一些 apache 簿记员类/方法,在这样做的过程中,我想在我的参数化测试中使用 mockito。没有 mockito 的测试工作正常但是当我尝试模拟接口(interfa
假设 A 列在 7 行中有以下值: 2 [空白的] 0 -0.3 0 [空白的] 0 如何获取范围(7 行)中非空/空白且不为零的最后一个值?因此,在这种情况下,正确答案是 -0.3。 最佳答案 =I
考虑以下受 this talk 启发的代码: template struct even_common_type_helper_impl; template struct even_common_typ
考虑这段代码, struct A {}; struct B { B(const A&) {} }; void f(B) { cout << "f()"<
考虑下面的类(class)。如果我对它运行 Findbugs,它会在第 5 行但不在第 7 行给我一个错误(“可序列化类中的非 transient 非可序列化实例字段”)。 1 public clas
我正在编写一个 python 脚本来计算 数据包丢失 通过使用 ping IP 地址linux 中的 subprocess 模块。 CSV 文件中保存了多个 IP 地址。当只给出可 ping 目的地时
我只是做文本更改,在文本之前它工作正常。请任何人都可以帮助我。 提前致谢 最佳答案 我已经解决了: ionic cordova 插件rmcordova-plugin-ionic-webview ion
我如何定义 在 persistence.xml 中? 我的项目在 Tomcat 6 和 Tomcat 7 中运行良好。 现在我正在使用 Struts 2 Spring 3.0.5 JPA 2 Jbos
我有一个 maven 仓库中不存在的第三方 jar,我们称它为“a.jar”,它也依赖于至少 20 多个第三方 jar,其中大部分不在 maven 中或者,我们称它们为“b.jar、c.jar、d.j
我已经浏览了各种线程很多小时(不夸张),但一直无法找到一种解决方案组合,使我能够将非 www 和 http 转发到 www 和 https,同时仍然能够查看 php 文件没有扩展名。如下是我的ngin
Scott Meyer 关于非成员函数增加封装并允许更优雅的设计(设计方面)的论点对我来说似乎非常有效。看这里:Article 但是我对此有疑问。 (似乎还有其他人,尤其是库开发人员,他们通常完全忽略
在对类设计的一些事实感到困惑时,特别是函数是否应该是成员,我查看了 Effective c++ 并找到了第 23 条,即 Prefer non-member non-friend functions
我正在尝试使用 firebase 云功能将通知发送到一个点半径的圆内的设备。我能够获取圈内设备的 ID,但无法获取 token ,使用 console.log(token) 打印时 token 为空。
我在我的项目中使用 React-ckeditor 5 包。我得到一个反序列化的 html 数据,我正在使用 React-html-parser 包将它解析成 html 模板,并将这个解析的数据传递给
我是一名优秀的程序员,十分优秀!