Pablo
10/21/2020, 9:52 AMnfrankel
10/21/2020, 9:54 AMPablo
10/21/2020, 10:02 AMnfrankel
10/21/2020, 10:17 AM"blabla"
, then call invoke()
on the returned functionjbnizet
10/21/2020, 1:14 PMsomething.execute('blabla')
, use something.execute(BlablaCommand())
or something.execute { generateA() }
Pablo
10/21/2020, 1:46 PMRob Elliot
10/26/2020, 10:25 AMenum class Scheme {
youtube { override fun uriFor(data: String) = "youtube://$data/you.be" },
twitter { override fun uriFor(data: String) = "<twitter://tw.er/$data>" };
abstract fun uriFor(data: String): String
}
fun main(vararg args: String) {
val schemeName = args[0]
val data = args[1]
Scheme.valueOf(schemeName).uriFor(data)
}
Rob Elliot
10/26/2020, 10:28 AMinterface RemoteSystem {
fun uriFor(data: String): String
}
class YouTube : RemoteSystem {
override fun uriFor(data: String) = "youtube://$data/you.be"
}
class Twitter : RemoteSystem {
override fun uriFor(data: String) = "<twitter://tw.er/$data>"
}
enum class Scheme {
youtube { override val system = YouTube() },
twitter { override val system = Twitter() };
abstract val system: RemoteSystem
}
fun main(vararg args: String) {
val schemeName = args[0]
val data = args[1]
Scheme.valueOf(schemeName).system.uriFor(data)
}
Rob Elliot
10/26/2020, 11:01 AMimport java.net.URI
enum class Scheme {
youtube { override fun uriFor(data: String): URI = URI.create("youtube://$data/").resolve("<http://you.be|you.be>") },
twitter { override fun uriFor(data: String): URI = URI.create("<twitter://tw.er/>").resolve(data) };
abstract fun uriFor(data: String): URI
}
fun main(vararg args: String) {
val schemeName = args[0]
val data = args[1]
Scheme.valueOf(schemeName).uriFor(data)
}
Rob Elliot
10/26/2020, 11:19 AMinterface RemoteSystem {
fun uriFor(data: String): URI
}
class YouTube : RemoteSystem {
override fun uriFor(data: String): URI = URI.create("youtube://$data/").resolve("<http://you.be|you.be>")
}
class Twitter : RemoteSystem {
override fun uriFor(data: String): URI = URI.create("<twitter://tw.er/>").resolve(data)
}
val schemes = mapOf(
"youtube" to YouTube(),
"twitter" to Twitter(),
)
fun main(vararg args: String) {
val schemeName = args[0]
val data = args[1]
val system = schemes[schemeName] ?: TODO("handle unknown scheme")
system.uriFor(data)
}
Rob Elliot
10/26/2020, 11:20 AM