gpt4 book ai didi

scala - 为重复方法创建一个 monad

转载 作者:行者123 更新时间:2023-12-01 07:29:55 26 4
gpt4 key购买 nike

我想了解 Scala 中的单子(monad)是什么。

例如,我在 Java 中有这样的方法:

public void doSomeThing()
{
a.call();
}

public void doOtherThing()
{
a2.call();
}

public void doSomeOtherThing()
{
a3.call();
}

所有以do开头的方法,只执行名为call的方法调用。如果我将其转换为 Java 中的通用方法,例如:

public void doGeneric(SomeClass a)
{
a.call();
}

并说这是一个泛型方法,带有 call 函数,那么 doGeneric 是一个 monad?如果我错了,请纠正我。

请注意,我在 Java 中给出了示例,因为我现在才开始使用 Scala。

最佳答案

Monad 与“容器”的概念相关联,例如 OptionList
基本上,定义 flatMap 方法的容器是一个 monad:

trait Monad[A] { //let's say a Monad container to be general. A well-known would be Option
def flatMap[B](f: A => Monad[B]): Monad[B]
}

在您的情况下,您只需在一个对象上调用一个方法。
您不是从另一个容器计算“容器”的值,因此您没有 monad。
实际上,您只是利用了多态性。

关于scala - 为重复方法创建一个 monad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25957896/

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