gpt4 book ai didi

Scala:方法中的方法

转载 作者:行者123 更新时间:2023-12-01 11:38:43 25 4
gpt4 key购买 nike

我一直在研究 Scala,想知道是否可以嵌套调用(可能是一种糟糕的描述方式)。

我正在尝试做的事情:

val nested:MyNestType =
foo("hi") {
foo("bye") {
foo("done")
}
}

这将循环并打印出:

"done" inside "bye" inside "hi" // or the other way around..

这如何使用 Scala 完成?

最佳答案

在 Scala 中有很多可怕的方法可以做这种事情:

sealed trait Action { def doIt(): Unit }

class InnerAction(message: String) extends Action { def doIt() = print(message) }

class WrapperAction(message: String, inner: Action) extends Action {
def doIt() = { inner.doIt(); print(s" inside $message") }
}

def foo(message: String)(implicit next: Action = null) =
Option(next).fold[Action](new InnerAction(message))(action =>
new WrapperAction(message, action)
)

trait MyNestType

implicit def actionToMyNestType(action: Action): MyNestType = {
action.doIt()
println()
new MyNestType {}
}

然后:

scala> val nested: MyNestType =
| foo("hi") {
| foo("bye") {
| foo("done")
| }
| }
done inside bye inside hi
nested: MyNestType = $anon$1@7b4d508f

不过请永远不要这样做。如果您正在编写 Scala,请编写 Scala。

关于Scala:方法中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24225991/

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