Swift:在初始化期间重写函数(看我在Java例子中的意思)

Swift: Override function during initialization (See what I mean in Java example)

在 Java 中,假设我们有一张名为 class 的卡片。 class 有一个方法 getAction() 和 returns 一个 class 动作的对象。

我知道可以在初始化期间覆盖此方法。像这样:

Card card = new Card() { 
   @Override
   public Action getCard() {
      return Action...
   }
}

我的问题是,您是否可以使用 Swift 语言执行此操作,或者您是否只需要为每个不同的方法覆盖创建一个 class?

你不能在 Swift 中这样做,你必须创建一个 class,然后你必须从那个 class 继承并覆盖方法。

您可以像这样回复:

您在 Java 中所指的称为 anonymous inner class - 您实际上是在声明一次性派生的 class 内联。

很遗憾 Swift没有这个功能。

但是你可以考虑给实例传递一个闭包。

假设您的卡 class 有一个变量 getCardFunction:

Class Card {
  var getCardFunction : () -> Int
}

现在你可以在初始化后传递你想要的功能了:

var card = Card()
card.getCardFunction = {
  return 6
}

注意:你甚至可以为getCardFunction函数设置默认值:

Class Card {
  var getCardFunction : () -> Int = {
    return 3
  }
}