Scala 什么是'<-';你在斯卡拉做什么?
我对这门语言还不熟悉,正试图弄明白如何阅读其中的一些代码。下面是我试图找出的示例代码:Scala 什么是'<-';你在斯卡拉做什么?,scala,Scala,我对这门语言还不熟悉,正试图弄明白如何阅读其中的一些代码。下面是我试图找出的示例代码: lazy val genHeap: Gen[H] = for{ n <- arbitrary[A] h <- frequency((1,value(empty)),(9,genHeap)) } yield insert(n,h) lazy val genHeap:Gen[H]=for{ 大家好,Coursera的同学们!反应式编程原理课程并不是学习Scala最容易的地方!它是一门
lazy val genHeap: Gen[H] = for{
n <- arbitrary[A]
h <- frequency((1,value(empty)),(9,genHeap))
} yield insert(n,h)
lazy val genHeap:Gen[H]=for{
大家好,Coursera的同学们!反应式编程原理课程并不是学习Scala最容易的地方!它是一门高级Scala课程
返回的类型是Gen
是的,这就是:
的意思。(确切地说,Gen
本身是一个对象,是一个随机生成器,可以生成一系列值,每个值的类型与其类型参数相同-在本例中为H
)
您好。您可能想从这里开始:实际上,即使您已经学习了第一门课程,您也可能在本练习中完全迷失……这里的任意[A]是否类似于流?函数是否递归调用genHeap,直到它到达一个空值,然后从那里构建堆?@Allen Wangarbitral[A]
是一个命令语句,它使用作用域中的隐式Gen[a]
生成一个类型为a
的随机值。从概念上讲,你可以认为它就像从无限个随机值流中弹出下一个随机值一样。是的,genHeap
是一个“调用自身”的递归值在这种情况下,懒惰来自这样一个事实,即它被定义为一个lazy val
。
lazy val genHeap: Gen[H] = arbitrary[A].flatMap(n => frequency((1,value(empty)),(9,genHeap)).map(h => insert(n,h)))