Cannot hack 1337 leet
from the CommonsWare Community archivesAt April 25, 2021, 3:16pm, ivano_trocchietto asked:
Hello Mark,
Regarding
https://klassbook.commonsware.com/lessons/Functional%20Programming/functional-interface.html
is written: “We do not need the object
keyword and a full function declaration.”
I see that we give a lambda expression with the hollywood principle, do not ask, tell and I understand how the snippet works, but I am not able to “reverse” to make a snippet without the functional interface, maintaining a generic type and an interface. Please How would the snippet be without functional interface?
At April 25, 2021, 3:59pm, mmurphy replied:
If you just decide to not have fun
:
interface Comparitizer<T> {
fun valid(item: T): Boolean
}
…then you get a compile error in:
val leetEvent = firstItemOrNull(events, Comparitizer { it.id == 1337 })
…saying Interface Comparitizer does not have constructors
.
Instead, you could write:
val leetEvent = firstItemOrNull(events, object : Comparitizer<Event> {
override fun valid(item: Event) = item.id == 1337
})
…but that is a lot more verbose.
At April 25, 2021, 5:09pm, ivano_trocchietto replied:
englighting! thanks.
ps not fun
is the way mystics always pointed out.
tao te ching chap 1:
Ever desireless, one can see the mystery.
Ever desiring, one can see the manifestations.
These two spring from the same source but differ in name;
this appears as darkness.
Darkness within darkness.
The gate to all mystery.