gpt4 book ai didi

design-patterns - 我们可以在运行时为 Scala 类分配/更改特征吗?如何 - 任何示例代码? Like Strategy Pattern (Gang of four Design Pattern)

转载 作者:行者123 更新时间:2023-12-03 23:37:09 27 4
gpt4 key购买 nike

解释我的问题:

类别:玩具

特质 1:说话像男性

特质2:说话像女性

我能否在运行时更改 Toy 的行为(特征),以便有时同一个对象说话像男性,有时同一个对象说话像女性?

我想在运行时改变说话行为。

最佳答案

sealed trait Speaker
case object Male extends Speaker
case object Female extends Speaker

class Toy(name: String, speaks: Speaker = Male) {
def speak = speaks match {
case Male => "ugh"
case Female => "What time do you call this?"
}
}

然后

barbie = ken.copy(speaks = Female)

您不能更改对象在运行时扩展的 trait,因为 trait 混入以创建类(在 .class 文件中)。一个给定的对象只有一个类,并且永远无法更改。

关于design-patterns - 我们可以在运行时为 Scala 类分配/更改特征吗?如何 - 任何示例代码? Like Strategy Pattern (Gang of four Design Pattern),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11054299/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com