Kotlin назвал синтаксис параметров для закрытия / лямбда

Я создал следующую функцию:

public fun storeImage(image: BufferedImage, toPath: String, onCompletion: (contentURL: URL) -> Unit) { val file = File(this.storageDirectory, toPath) log.debug("storing image: ${file.absolutePath}") val extension = toPath.extensionOrNull() if (!file.exists()) { file.parentFile.mkdirs() file.createNewFile() } ImageIO.write(image, extension!!, FileOutputStream(file.absolutePath)) onCompletion(URL(contentBaseUrl, toPath)) } 

Я вижу, что могу назвать это так:

 contentManager.storeImage(image, "1234/Foobar.jpg", onCompletion = { println("$it") }) 

Или я могу использовать синтаксис закрывающего закрытия:

 contentManager.storeImage(image, "1234/Foobar.jpg") { println("$it") } 

Но как мне вызвать метод образа хранилища и вызвать функцию onCompletion с помощью именованных параметров?

Редактировать / Пример:

Я хотел бы вызвать метод storeImage используя синтаксис, подобный:

 contentManager.storeImage(image, "1234/Foobar.jpg", onCompletion = (bar: URL) : Unit -> { //do something with bar } 

Я не мог найти правильный синтаксис в документах для такого типа вещей.

Вы можете использовать регулярный синтаксис для присвоения имен лямбда-параметрам. Это работает независимо от того, используете ли вы именованный аргумент для передачи лямбда функции.

 contentManager.storeImage(image, "1234/Foobar.jpg", onCompletion = { bar -> //do something with bar }) 
Intereting Posts