Scala中的单子

Scala | Monad

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。结果是一个包含所有可能映射的集合。