将 Objective-C 代码转换为 Swift 的正确方法是什么?
while ((size = [inputdata readWithByteArray:buf]) != -1) {
//...
}
我需要类似的(从这里 https://stackoverflow.com/a/25668371/1979882):
while let super = view?.superview {
count++
view = super
}
但就我而言,我必须将值与-1
代替nil
.
您可以使用while case
使用绑定模式加上布尔条件:
// Swift 3 (Xcode 8):
while case let size = inputdata.readWithByteArray(&buf), size != -1 {
// process data
}
// Swift 2 (Xcode 7.3.1):
while case let size = inputdata.readWithByteArray(&buf) where size != -1 {
// process data
}
(以前的答案:)一个简单的实现如下所示:
var size = inputdata.readWithByteArray(&buf)
while size != -1 {
// process data ...
size = inputdata.readWithByteArray(&buf)
}
如果代码重复困扰您,那么您也可以将其写为
(仅限 Swift 3/Xcode 8):
var size: Int
while (size = inputdata.readWithByteArray(&buf), size).1 != -1 {
// process data
}
这里的(...).1
表达式计算出第二个元组元素,
即到size
,并且第一个元组元素仅被评估
它的副作用。 (这在 Swift 中是可能的,因为表达式
正如 Chris Lattner 所说,从左到右评估
在https://forums.developer.apple.com/thread/20001#63783 https://forums.developer.apple.com/thread/20001#63783.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)