xenoterracide
12/30/2018, 6:01 AMkarelpeeters
12/30/2018, 5:07 PMraulraja
12/30/2018, 8:23 PMxenoterracide
12/31/2018, 6:59 AMxenoterracide
12/31/2018, 7:05 AMNameable { var name }
and I compose it with Identifiable { var id }
when composed into a concrete implementation I shouldn't have to override id/name.karelpeeters
12/31/2018, 8:16 AMxenoterracide
12/31/2018, 8:21 AMxenoterracide
12/31/2018, 8:28 AMkarelpeeters
12/31/2018, 8:47 AMMike
12/31/2018, 2:23 PMpoohbar
01/03/2019, 1:42 AMxenoterracide
01/03/2019, 11:42 PMpoohbar
01/03/2019, 11:51 PMlouiscad
01/03/2019, 11:58 PMoperator fun
. I've a use case which is diving the number of a kind of functions in a project by 3 where I currently define them for multiple types that have a property of the same type. I've been thinking about submitting a KEEP, but I'm missing some pieces to have a good design proposal, it's about how to write an inline interface adapter.raulraja
01/04/2019, 12:05 AMraulraja
01/04/2019, 12:31 AMraulraja
01/04/2019, 12:32 AMxenoterracide
01/04/2019, 12:39 AMxenoterracide
01/04/2019, 12:50 AMlouiscad
01/04/2019, 12:52 AMlouiscad
01/04/2019, 1:03 AMxenoterracide
01/04/2019, 1:19 AMxenoterracide
01/11/2019, 7:35 PMraulraja
01/11/2019, 7:40 PMraulraja
01/11/2019, 7:41 PMraulraja
01/11/2019, 7:41 PMraulraja
01/11/2019, 7:47 PMinterface Nameable<A> {
fun A.name(): String
}
data class Person(val firstName: String)
extension object PersonNameable: Nameable<Person> {
override fun Person.name(): String = firstName
}
fun List<A>.names(with nameable: Nameable<A>): List<String> =
map { it. name() }
listOf(Person("John"), Person("Jane")).names()
raulraja
01/11/2019, 7:49 PMnames()
to be invoked because if there was no Nameable<Person>
declared as extension it would not compile with an appropriate error. This technique allows you to inject any functionality over any type in a type safe way at compile time wether you are the author or it's a third party type.raulraja
01/11/2019, 7:50 PMxenoterracide
01/11/2019, 7:52 PMraulraja
01/11/2019, 7:53 PMraulraja
01/11/2019, 7:53 PMxenoterracide
01/11/2019, 7:54 PMraulraja
01/11/2019, 7:54 PMraulraja
01/11/2019, 7:55 PMraulraja
01/11/2019, 7:55 PMraulraja
01/11/2019, 7:56 PMextension object|val
, extension class
, extension fun
xenoterracide
01/11/2019, 7:56 PMxenoterracide
01/11/2019, 7:56 PMraulraja
01/11/2019, 7:56 PMraulraja
01/11/2019, 7:57 PMxenoterracide
01/11/2019, 7:57 PMxenoterracide
01/11/2019, 7:59 PMraulraja
01/11/2019, 8:00 PM