SWIFT:访问对象的捷径?

时间:2015-07-27 17:30:22

标签: performance swift object shortcut

在为对象设置参数时,我经常需要多次访问同一个对象,如:

monster.physicsBody?.dynamic = true 
monster.physicsBody?.categoryBitMask = PhysicsCategory.Monster
monster.physicsBody?.contactTestBitMask = PhysicsCategory.Projectile
monster.physicsBody?.collisionBitMask = PhysicsCategory.None

SWIFT中是否有任何捷径可以缩短但性能相同甚至更好?在VB中有类似

的东西
With monster.physicsBody
   .dynamic = ...
End With

当分配给新变量时,我得到一份副本,所以我无法更改原始值。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

Swift中没有像With这样的东西。您可以将if let与一个字母变量一起使用,以使其尽可能短。此外,如果categoryBitMask的类型为PhysicsCategory,则您只能使用.Monster等。

if let b = monster.physicsBody {
  b.dynamic = true 
  b.categoryBitMask = .Monster
  b.contactTestBitMask = .Projectile
  b.collisionBitMask = .None
}

答案 1 :(得分:-1)

这样做

ScaleAnimation animation = new ScaleAnimation(1.0f, 1.1f, 1.1f, 1.0f, Animation.RELATIVE_TO_PARENT, (float) (button1.getX()+ 45*ssu) / width, Animation.RELATIVE_TO_PARENT, (float) (button1.getY()+ 45*ssu) / (4 * height) );
                animation.setDuration(1000);
                animation.setRepeatMode(ValueAnimator.REVERSE);
                animation.setRepeatCount(animation.INFINITE);
                button1.startAnimation(animation);

访问同一个对象。