Interview: What is Lambda expression? [closed]

Lambda Expressions are nameless functions given as constant values. They can appear anywhere that any other constant may, but are typically written as a parameter to some other function. The canonical example is that you’ll pass a comparison function to a generic “sort” routine, and instead of going to the trouble of defining a whole … Read more

Consumer with more than one argument in Java 8?

For 3 and more arguments you could use curried(http://en.wikipedia.org/wiki/Currying) functions with last consumer: Function<Double, Function<Integer, Consumer<String>>> f = d -> i -> s -> { System.out.println(“” + d+ “;” + i+ “;” + s); }; f.apply(1.0).apply(2).accept(“s”); Output is: 1.0;2;s It’s enough to have a function of one argument to express function of any number of … Read more

Using return inside a lambda?

Just use the qualified return syntax: return@fetchUpcomingTrips. In Kotlin, return inside a lambda means return from the innermost nesting fun (ignoring lambdas), and it is not allowed in lambdas that are not inlined. The return@label syntax is used to specify the scope to return from. You can use the name of the function the lambda … Read more

Passing lambda instead of interface

As @zsmb13 said, SAM conversions are only supported for Java interfaces. You could create an extension function to make it work though: // Assuming the type of dataManager is DataManager. fun DataManager.createAndSubmitSendIt(title: String, message: String, progressListener: (Long) -> Unit) { createAndSubmitSendIt(title, message, object : ProgressListener { override fun transferred(bytesUploaded: Long) { progressListener(bytesUploaded) } }) } … Read more