假设我有一个类。
如果我的类(class)未遵循所描述的规则,我想在init中给出错误

class Puzzle {

var puzzle_array: [Int]
var zero_index: Int

public init(array: [Int]) {
    assert(array.count == 9, "Array should be lenght 9")
    assert(array.index(of: 0) != nil, "There should ne 0 in array")
    puzzle_array = array
    zero_index = puzzle_array.index(of: 0)!
}
}

然后,我需要在循环中创建此类的几个实例。其中一些不满足条件,我在init和complier中进行了描述,但会出现错误。
但是我想要的是跳过此实例的创建而不执行错误。而且我想继续检查init中的条件逻辑。

我最初的想法可能是错误的,但是如果您能帮助我使其更正确,我将不胜感激。

最佳答案

您可以使用failable initialiser完成此操作,如果您不满意检查,则对象将为nil。

class Puzzle {
  var puzzle_array: [Int]
  var zero_index: Int

  public init?(array: [Int]) {
    guard array.count == 9, array.index(of: 0) != nil else {
      return nil
    }

    puzzle_array = array
    zero_index = puzzle_array.index(of: 0)!
  }
}

10-07 16:36
查看更多