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
}
}
在 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
}
}