i knew this question might be dumb.
I just found myself have difficulty understanding the fold definition from Scala Optionlink.
Can anyone help me to understand the definition part? final def fold[B](ifEmpty: => B)(f: (A) => B): B
What does (ifEmpty: => B) mean, does the ifEmpty here represents a function? What does the right part => B represent? Does it represent a function without any parameter? Should that be () => B?
There is quite a lot of going on in definition of
We have
ifEmpty: => B. This is indeed similar to() => Band meansifEmptyis not evaluated until used (if ever) inside the method body.(ifEmpty: => B)(f: (A) => B)which helps type inference because Scala type inference works per list. This means we do not have to explicitly provide[B]type parameter at call-site.AandBmake the method polymorphicfinalprevents the method from being overridenfoldis a higher-order method because it accepts argument of function type(A) => B