switch-statement - 无法分配给 'let' 值 'action'

标签 switch-statement swift constants

我试图在 switch 语句之外定义一个常量,以便在 switch 语句执行完毕后使用它并在 switch 语句中分配它:

let action: SKAction!

switch (whatever) {
case 0:
    sprite.position = CGPointMake(0, self.scene.size.height * lengthDiceroll)
    action = SKAction.moveTo(CGPointMake(self.scene.size.width, self.scene.size.height * (1 - lengthDiceroll)), duration: 1) // error here
    // other actions
default:
    println("meh")       

// add the sprite to the scene
let sequence = SKAction.sequence([action, action2])
sprite.runAction(SKAction.repeatActionForever(sequence))
self.addChild(sprite)

但我收到错误无法分配给“let”值“action”。如何分配给操作以便我可以在 switch 之外使用它?

如果我尝试:

action! = SKAction.moveTo(CGPointMake(self.scene.size.width, self.scene.size.height * (1.0 - lengthDiceroll)), duration: 1)

我收到错误 “找不到接受提供的参数的 '*' 的重载”

最佳答案

let 声明的变量必须立即赋值。您不能像在第一行尝试做的那样简单地使用 let 定义一个没有值的变量。

你说你想让 action 成为常量,但是你在运行时修改它的值,这不是常量。因此,您需要一个变量,即使它的值只改变一次。

关于switch-statement - 无法分配给 'let' 值 'action',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24225189/

相关文章:

java - 我们可以在 Java 的同一 switch 语句中的另一个 case 中调用 "case"吗?

ios - 快速在 iPhone 应用程序的事件指示器中旋转的自定义图像

c++ - 将指向 T 的指针存储在 void* 中,但 T 可以是常量或非常量 - 使用 void const* 还是仅使用 void*?

java - Switch 语句在 for 循环中提前结束

angular - 单击开关更改颜色

ios - 添加 subview 时标题 View 消失?

ios - 无法在 UICollectionViewController 上平滑滚动以加载大量数据

c - 将 scanf 与 char 数组及其大小一起使用

c - 为什么 const 变量不需要在 C 中初始化?

java - 将对象传递给 switch 语句以传递给不同类中的方法