以下表达式在 Swift 中的含义是什么:
[wordmarkFrameAnimation addKeyFrames:@[
({
IFTTTAnimationKeyFrame *keyFrame = [IFTTTAnimationKeyFrame keyFrameWithTime:timeForPage(1) andFrame:CGRectOffset(self.wordmark.frame, 200, 0)];
keyFrame.easingFunction = IFTTTEasingFunctionEaseInQuart;
keyFrame;
}),
]];
我知道外面的部分是一个数组 (@[...]
) 但以 ({
开头并以 } 结尾的部分是什么)
是什么意思?
最佳答案
与 Swift 不同,Objective-C - 因为它是 C - 可以使用简单的大括号在任何地方创建局部作用域。此外,通过 GCC extension to the C language , 当花括号本身被圆括号括起来时,这个作用域可用于生成一个值——即花括号中的最后一个表达式。因此,这是一种内联定义、配置和返回 keyFrame
的方法。
因此,要理解 Swift 术语中的含义,请将其大致等同于此类事物,这实际上是一种相当常见的 Swift 习语(我称之为 define-and-call ):
let arr : [UIView] = [
{
let v = UIView(frame:CGRectMake(0,0,100,100))
v.opaque = true
v.backgroundColor = UIColor.redColor()
return v
}()
]
关于ios - Swift 等效于 Objective-C 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30580161/