Приветствую вас, ученик Курсеры! Принципы реактивного программирования - это не совсем простое место, чтобы начать изучать Scala! Это продвинутый курс Scala.
Тип возврата - это Gen?
Да, это то, что означает :
. (The Gen
сам по себе является объектом, генератор случайных, чтобы быть точным, которые могут производить последовательность значений, каждое из которых имеет один и тот же тип, как параметр типа -. В этом случае, H
)
ли < - действовать как оператор '='?
Не совсем.
и инструкция о выходе. Насколько я понимаю, она создает кучу с каждой итерацией, вставив новый элемент?
На самом деле это рекурсия, а не итерация ... но по существу, да.
A для выражения .. для выражения является причудливым способом записи серии из map
, flatMap
и withFilter
выписок. Давайте desugar его на обычный 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
(пустой H
с вероятностью 0,1, или результат снова вызывая genHeap
с вероятностью 0,9), а затем вставляя A
в H
, чтобы получить новый номер H
.
Эти A
и H
s оба являются абстрактными типами, между прочим.
Да, я бы сказал, это довольно продвинутый материал. Если вы даже не знаете, что означает :
, вы определенно начинаете не в том месте.
Привет. Вероятно, вы захотите начать здесь: http://www.artima.com/pins1ed/for-expressions-revisited.html – david