Monad是Scala编程语言的一个棘手的概念。它是对象类型的包装,一个对象包装另一个对象。它既不是特质也不是阶级。同样,大多数收藏品都是单子,但不可能相反。
单子是一种数据类型,它实现映射和flatMap()如列表,选项等
unit():不返回任何数据类型。
flatMap():map()
类似于返回一系列数据类型而不是单个组件的方法。
让我们举一个例子来了解monad方法的工作。
object myObject { def main(args:Array[String]) { val setA = Set(4, 6, 8, 2) val setB = Set(3, 5, 7, 1) val multiple = setA flatMap { q => setB map { r=>q*r } } print("Multiplication of SetA and SetB is : ") println(multiple) } }
输出结果
Multiplication of SetA and SetB is : HashSet(14, 20, 6, 28, 2, 12, 18, 40, 8, 30, 4, 10, 56, 42, 24)
说明:
在上面的程序中,要使用flatMap()方法来查找两组元素的乘法。它映射(乘以)每个元件组A到的所有元素组B。结果是一个包含所有可能映射的集合。