通常可以獲取給予類的所有參數/構造函數參數嗎?獲取傳遞給Scala中的一個類的所有參數
喜歡的東西:
trait GetMyArgs {
def myArgs = ???
}
class Foo(i: Int, d: Double) extends GetMyArgs
=>
scala> val f = new Foo(5, 6.6)
scala> f.myArgs
(5, 6.6) // or similar
通常可以獲取給予類的所有參數/構造函數參數嗎?獲取傳遞給Scala中的一個類的所有參數
喜歡的東西:
trait GetMyArgs {
def myArgs = ???
}
class Foo(i: Int, d: Double) extends GetMyArgs
=>
scala> val f = new Foo(5, 6.6)
scala> f.myArgs
(5, 6.6) // or similar
def myArgs = {
this.getClass.getDeclaredFields
.toList
.map(i => {
i.setAccessible(true)
i.getName -> i.get(this)
}).toMap
}
你可以使用Java的reflection
做到這一點。但需要調出,如果變量不使用且構造函數參數不是val
,則myArgs
將輸出空Map
。
你想要做什麼?使用反射通常是不鼓勵 – daydreamer
看看http://scalameta.org/ – pedrorijo91
謝謝,@daydreamer我本質上是做一個memoization的形式,有一個很好的方式來做到這一點,作爲一個地圖實現一個函數,但這具有能夠將記憶混合到現有功能的好處。 – spiffman