我试图了解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。
答案 0 :(得分:1)
Monad与Option
或List
等“容器”的概念相关联
基本上,定义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 实际上,你只是利用了多态性。