Skip to content

Instantly share code, notes, and snippets.

@Rulexec
Created November 26, 2016 15:59
Show Gist options
  • Save Rulexec/9ceb5f7e1b266715e380cc00fb939733 to your computer and use it in GitHub Desktop.
Save Rulexec/9ceb5f7e1b266715e380cc00fb939733 to your computer and use it in GitHub Desktop.
import java.util.concurrent.atomic.AtomicInteger
interface IController {
fun handle(request: AtomicInteger)
}
fun createController(handler: (request: AtomicInteger) -> Unit): IController {
return object : IController {
override fun handle(request: AtomicInteger) = handler(request)
}
}
private val createControllerF = { handler: (request: AtomicInteger) -> Unit ->
object : IController {
override fun handle(request: AtomicInteger) = handler(request)
}
}
infix fun (((AtomicInteger) -> Unit) -> IController).respondsJSON(
handler: (AtomicInteger) -> Unit): IController
{
return createController { request ->
request.incrementAndGet()
this(handler)
}
}
fun example() {
createControllerF respondsJSON { request -> /**/ }
createControllerF respondsJSON respondsJSON
createController respondsJSON
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment