簡體   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