Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

303
Views
Why does ide say "Value captured in a closure" when using Iterable.flatMap but doesn't when using map then flatten in kotlin?
inline fun <T : Any, E : Any> batchQuery(
    paramsToBeChunked: Collection<T>,
    batchSize: Int = 500,
    crossinline queryAction: (params: Collection<T>) -> List<E>
) = paramsToBeChunked.chunked(batchSize).flatMap { queryAction(it) } 

enter image description here

inline fun <T : Any, E : Any> batchQuery(
    paramsToBeChunked: Collection<T>,
    batchSize: Int = 500,
    crossinline queryAction: (params: Collection<T>) -> List<E>
) = paramsToBeChunked.chunked(batchSize).map { queryAction(it) }.flatten()

enter image description here

Is there any potential problem when using flatMap?

IMHO, map, flatten, flatMap are all inline functions, so these two implementations are equivalent, is this right?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

If the fun wasn't inline then in both cases queryAction would have to be captured in a closure, because it's coming from outside of the lambda. It means that a class which is generated under the hood holds a reference to the variable, and when the lambda is eventually executed, it uses that reference.

But here, it's inlined just fine. Idea tries it's best to give information about captured variables but in this situation it might be a limitation of Idea's static analysis. The first message is just incorrect.

As @broot suggested, you can replace .map { f(it) } with just .map(f).

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!