Tim*_*per 4 functional-programming scala superclass
在 Scala 中获取给定 Class 实例的超类的简短函数方法是什么?
我能想到的就是这个
def supers(cl: Class[_]): List[Class[_]] = {
cl :: Option(cl.getSuperclass).map(supers).getOrElse(Nil)
}
Run Code Online (Sandbox Code Playgroud)
有谁知道带有一些奇特功能结构的较短形式?
不完全是花哨的功能结构,但(稍微)更短:
def supers(cl: Class[_]): List[Class[_]] = {
if (cl == null) Nil else cl :: supers(cl.getSuperclass)
}
scala> class Foo; class Bar extends Foo; class Baz extends Bar
defined class Foo
defined class Bar
defined class Baz
scala> supers(classOf[Baz])
res9: List[Class[_]] = List(class Baz, class Bar, class Foo, class java.lang.Object)
Run Code Online (Sandbox Code Playgroud)
请注意,这为您提供了类及其所有超类,但 OP 提供的类也是如此。
| 归档时间: |
|
| 查看次数: |
1297 次 |
| 最近记录: |