0
我正在編寫一個scala宏,它檢查給定的函數以找到它的參數名稱和類型。Scala宏:函數引用的參數類型
def hello(i: Int, s: String) = s + i
它的工作原理,到目前爲止,如果我喂這樣的宏:
val args: TypeInfo = signature(hello _)
但我也希望能夠只是一個參考提供給原有的功能:
def invokeMacro(f: (Int, String) => String) = signature(f)
invokeMacro(hello)
不幸的是,這不起作用。
這裏是我得到的宏中的類型信息:
val typeInfo = TypeInfo(t.filter(_.isDef).collect {
case ValDef(_, name, typ, _) =>
name.decodedName.toString -> typ.tpe.toString
})
現在我在想,如果有可能讓原有的功能「你好」的保持宏觀 內,提取它的類型信息。用 仔細檢查宏中可用的信息,調試器不會產生所期望的結果。
所以我想知道是否有可能,如果沒有:爲什麼?如果可能的話,怎麼樣?
偉大的,它的作品,以及;我曾預計會有新的名字。 –