Ray Rahke
02/21/2024, 10:21 AMFoo::class
repeatedly is kind of annoying compared to just doing Foo
in languages like Typescript/Python
val relevantTypes = List<Base>(SubA::class, SubB::class, SubC::class, SubD::class)
Is there a nicer way to do this?Shawn
02/21/2024, 4:22 PMinline
and reified
but you would need to write a function definition for each arity you needShawn
02/21/2024, 4:25 PMShawn
02/21/2024, 4:25 PMFoo
in without qualification, it actually references the class's companion object
if it existsShawn
02/21/2024, 4:41 PMRay Rahke
02/21/2024, 4:42 PMRay Rahke
02/21/2024, 4:42 PMRay Rahke
02/21/2024, 4:42 PMRay Rahke
02/21/2024, 4:42 PMRay Rahke
02/21/2024, 4:43 PMShawn
02/21/2024, 4:43 PMif (component is Transform)
?Ray Rahke
02/21/2024, 4:43 PMRay Rahke
02/21/2024, 4:43 PMRay Rahke
02/21/2024, 4:43 PMRay Rahke
02/21/2024, 4:44 PMRay Rahke
02/21/2024, 4:44 PMRay Rahke
02/21/2024, 4:44 PMRay Rahke
02/21/2024, 4:44 PMShawn
02/21/2024, 4:44 PMRay Rahke
02/21/2024, 4:44 PMShawn
02/21/2024, 4:44 PMRay Rahke
02/21/2024, 4:44 PMRay Rahke
02/21/2024, 4:45 PMRay Rahke
02/21/2024, 4:45 PMRay Rahke
02/21/2024, 4:46 PMShawn
02/21/2024, 4:46 PMRay Rahke
02/21/2024, 4:46 PMRay Rahke
02/21/2024, 4:46 PMRay Rahke
02/21/2024, 4:47 PMRay Rahke
02/21/2024, 4:47 PMRay Rahke
02/21/2024, 4:47 PMRay Rahke
02/21/2024, 4:47 PMRay Rahke
02/21/2024, 4:47 PMShawn
02/21/2024, 4:48 PMval name
on Piece
and have your classes implement it?Ray Rahke
02/21/2024, 4:49 PMRay Rahke
02/21/2024, 4:49 PMShawn
02/21/2024, 4:49 PMKClass
may not be the correct abstraction for what you need, and that you may be better served more directly modeling the data required rather than relying on one that was written with entirely different goals in mindRay Rahke
02/21/2024, 4:49 PMRay Rahke
02/21/2024, 4:50 PMRay Rahke
02/21/2024, 4:50 PMKlitos Kyriacou
02/21/2024, 4:51 PMShawn
02/21/2024, 4:52 PMinstances.filterIsInstance<ClassImLookingFor>()
Ray Rahke
02/21/2024, 4:52 PMComponent
which is used everywher else in my program as the interface of which you should pass in sub classes instances (so liskov + DI)Shawn
02/21/2024, 4:53 PMRay Rahke
02/21/2024, 4:53 PMRay Rahke
02/21/2024, 4:53 PMShawn
02/21/2024, 4:58 PM.filter { it is Transform || it is RigidBody }
at the call siteRay Rahke
02/21/2024, 4:58 PMRay Rahke
02/21/2024, 4:59 PMRay Rahke
02/21/2024, 4:59 PMRay Rahke
02/21/2024, 5:00 PMRay Rahke
02/21/2024, 5:00 PMRay Rahke
02/21/2024, 5:00 PMRay Rahke
02/21/2024, 5:01 PMShawn
02/21/2024, 5:02 PMRay Rahke
02/21/2024, 5:02 PMRay Rahke
02/21/2024, 5:02 PMRay Rahke
02/21/2024, 5:02 PMRay Rahke
02/21/2024, 5:03 PMRay Rahke
02/21/2024, 5:03 PMRay Rahke
02/21/2024, 5:04 PMRay Rahke
02/21/2024, 5:05 PMShawn
02/21/2024, 5:05 PMRay Rahke
02/21/2024, 5:05 PMRay Rahke
02/21/2024, 5:06 PMShawn
02/21/2024, 5:06 PMShawn
02/21/2024, 5:06 PMShawn
02/21/2024, 5:06 PMRay Rahke
02/21/2024, 5:06 PMRay Rahke
02/21/2024, 5:06 PMRay Rahke
02/21/2024, 5:06 PMRay Rahke
02/21/2024, 5:07 PMShawn
02/21/2024, 5:13 PMShawn
02/21/2024, 5:14 PMShawn
02/21/2024, 5:15 PMRay Rahke
02/21/2024, 5:15 PMRay Rahke
02/21/2024, 5:15 PMRay Rahke
02/21/2024, 5:16 PMRay Rahke
02/21/2024, 5:16 PMRay Rahke
02/21/2024, 5:16 PMRay Rahke
02/21/2024, 5:18 PMShawn
02/21/2024, 5:18 PMRay Rahke
02/21/2024, 5:19 PMRay Rahke
02/21/2024, 5:19 PMRay Rahke
02/21/2024, 5:21 PMRay Rahke
02/21/2024, 5:22 PMRay Rahke
02/21/2024, 5:23 PMRay Rahke
02/21/2024, 5:23 PMShawn
02/21/2024, 5:29 PMShawn
02/21/2024, 5:30 PMRay Rahke
02/21/2024, 5:43 PMRay Rahke
02/21/2024, 5:43 PMRay Rahke
02/21/2024, 5:43 PMPaul Griffith
02/22/2024, 5:03 PMtrackN
extension function or anything to (abuse) reified types to get arbitrary resolution. You could manually write out the first few overloads, but they have to have different names for overload resolution, even in Kotlin, so it’s still a pretty awkward UX