繁体   English   中英

scala中的'< - '是做什么的?

[英]What does the '<-' do in scala?

我是该语言的新手,并试图弄清楚如何阅读其中的一些代码。 这是我想要弄清楚的示例代码:

lazy val genHeap: Gen[H] = for{
    n <- arbitrary[A]
    h <- frequency((1,value(empty)),(9,genHeap))
} yield insert(n,h)

我不太明白发生了什么:

  • 返回类型是Gen
  • <-是否作为=运算符?
  • yield语句是否通过插入新元素为每次迭代构建一个堆?

你好,Coursera同学! 反应式编程课程的原理并不是开始学习Scala的最简单的地方! 这是一门先进的Scala课程。

类型返回是Gen?

是的,这就是:意思。 Gen本身是一个对象,一个精确的随机生成器,它可以生成一系列值,每个值与其类型参数具有相同的类型 - 在本例中为H

< - 是否作为'='运算符?

不完全是。

和yield语句..据我所知,它是通过插入一个新元素与每次迭代构建一个堆?

实际上它是递归,而不是迭代......但实质上,是的。

for..yield表达式是编写一系列mapflatMapwithFilter调用的一种奇特方式。 让我们把它变成普通的Scala代码:

lazy val genHeap: Gen[H] = arbitrary[A].flatMap(n => frequency((1,value(empty)),(9,genHeap)).map(h => insert(n,h)))

因此, H生成器( genHeap )是通过生成任意A ,然后生成任意H (概率为0.1的空H ,或者以0.9的概率再次调用genHeap本身的结果),然后将A插入到H得到一个新的H

顺便说一句,这些AH都是抽象类型。

是的,我会说这是非常先进的东西 如果你甚至不知道:什么意思,你肯定是在错误的地方开始的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM