2014-10-13 2 views
-1

Я отчасти новичок в программировании, и я последовал за шагом шаг за шагом, все работало нормально, но в этот момент я застрял. Я проверил все, но это говорит, что существует причин неэффективности каждый раз, когда я пытался исправить его и построить его придумали бы неудачи, такие как Expected expressions in list of expressions, Expected ',' separator и '()' is not convertible to 'Orientation'Быстро: ожидаемые ',' отказы?

import Foundation 
import SpriteKit 

let NumOrientations: UInt32 = 4 

enum Orientation: Int, Printable { 
    case Zero = 0, Ninety, OneEighty, TwoSeventy 

    var description: String { 
     switch self { 
     case .Zero: 
      return "0" 
     case .Ninety: 
      return "90" 
     case .OneEighty: 
      return "180" 
     case .TwoSeventy: 
      return "270" 
     } 
    } 

    static func random() -> Orientation { 
     return Orientation.fromRaw(<#Int#>(arc4random_uniform(NumOrientations))) 
    } 

// #1 
    static func rotate(orientation:Orientation, clockwise: Bool) -> Orientation { 
     var rotated = orientation.toRaw() + (clockwise ? 1 : -1) 
     if rotated > Orientation.TwoSeventy.toRaw() { 
      rotated = Orientation.Zero.toRaw() 
     } else if rotated < 0 { 
      rotated = Orientation.TwoSeventy.toRaw() 
     } 
     return Orientation.fromRaw(rotated)! 
    } 
} 

Любая помощь?

+0

Я не знаю, Swift но эта строка, очевидно, является проблемой: 'return Orientation.fromRaw (<#Int#> (arc4random_uniform (NumOrientations)))'. – rmaddy

+2

Вы знаете, было бы действительно полезно, если бы вы рассказали нам, в какой строке произошла ошибка. –

+0

<#Int#> - это текстовые вставки Xcode, которые помогут с автозавершением в среде IDE. Как правило, вы вставляете вкладку, и он будет выбирать этот текстовый блок (и это будет сказать Int), и вы наберете его. Это определенно нужно удалить. – rickerbh

ответ

1

Я не знаю, где вы получили < # Int #> синтаксис с, но это работает для меня:

static func random() -> Orientation! { 
    return Orientation.fromRaw(Int(arc4random_uniform(NumOrientations))) 
} 

Обратите внимание, что тип возвращаемого значения должен быть Orientation!, не Orientation как это не является необязательный.

Аналогично для функции rotate

static func rotate(orientation:Orientation, clockwise: Bool) -> Orientation! { 
    var rotated = orientation.toRaw() + (clockwise ? 1 : -1) 
    if rotated > Orientation.TwoSeventy.toRaw() { 
     rotated = Orientation.Zero.toRaw() 
    } else if rotated < 0 { 
     rotated = Orientation.TwoSeventy.toRaw() 
    } 
    return Orientation.fromRaw(rotated) 
} 

Обратите внимание, что вы можете сделать поворот функции метод экземпляра, а не статична, что лучше объектно-ориентированное проектирование

func rotate(#clockwise:Bool) -> Orientation! { 
    var rotated = self.toRaw() + (clockwise ? 1 : -1) 
    if rotated > Orientation.TwoSeventy.toRaw() { 
     rotated = Orientation.Zero.toRaw() 
    } else if rotated < 0 { 
     rotated = Orientation.TwoSeventy.toRaw() 
    } 
    return Orientation.fromRaw(rotated) 
} 
Смежные вопросы