Q
結構亞型反射
8
A
回答
10
scala> import scala.reflect.runtime.{universe => ru}
import scala.reflect.runtime.{universe=>ru}
scala> import scala.reflect.runtime.universe._
import scala.reflect.runtime.universe._
scala> def typeOf[T: ru.TypeTag](x: T) = ru.typeOf[T] // capture compile-time type info
typeOf: [T](x: T)(implicit evidence$1: reflect.runtime.universe.TypeTag[T])reflect.runtime.universe.Type
scala> val f = (r: {val s: String}) => {}
f: AnyRef{val s: String} => Unit = <function1>
scala> val tpe = typeOf(f)
tpe: reflect.runtime.universe.Type = scala.AnyRef{val s: String} => Unit
scala> ru.showRaw(tpe)
res0: String = TypeRef(ThisType(scala), scala.Function1, List(RefinedType(List(TypeRef(ThisType(scala), newTypeName("AnyRef"), List())), Scope(newTermName("s"))), TypeRef(ThisType(scala), scala.Unit, List())))
scala> val ru.TypeRef(_, _, refinement :: _) = tpe
refinement: reflect.runtime.universe.Type = scala.AnyRef{val s: String}
使用Scala反射一個也可以生成用於結構類型嘲笑如下:https://gist.github.com/4008389。鏈接的要點使用工具箱和運行時反射來完成,但是這種情況也適用於宏。
相關問題
- 1. Unmarshal json反射結構
- 2. 在結構型注射
- 3. Automapper映射類型亞型
- 4. 變量與亞型(結構?)Python的
- 5. 使用反射和結構圖
- 6. Java反射無法改變結構
- 7. c#嵌套結構屬性的反射
- 8. 使用反射的運行時結構
- 9. 正在獲取反射。結構的類型
- 10. 從反射型
- 11. Java反射/泛型
- 12. FluentAssertions反射型等
- 13. 反射和泛型類型
- 14. 結構相反?
- 15. 使用反射在構造
- 16. 確定反射類型是否可以投射到另一種反射類型
- 17. 反轉樹結構
- 18. BEM結構反饋
- 19. C#反射 - 投射參數到類型
- 20. Orika映射器 - 現場亞型
- 21. 查找泛型反射
- 22. 非stringly類型的反射
- 23. 法提取,泛型,反射
- 24. 泛型的Java反射
- 25. 反射類型不匹配
- 26. C#泛型和反射
- 27. 反射GetBytes會,int64類型
- 28. Phong反射模型參數
- 29. 類類型的反射
- 30. 爲通用型(反射)
在2.9或2.10還是不重要? –
2.9或2.10並不重要。但我通常使用2.9.2。 – sndyuk
我非常懷疑在沒有使用編譯器的情況下它可能在2.9中。在2.10中有反射api,可能會允許檢查「r」的類型。 – pedrofurla