คำถามติดแท็ก structural-typing

1
รับประเภทโครงสร้างด้วยวิธีการเรียนที่ไม่ระบุชื่อจากแมโคร
สมมติว่าเราต้องการเขียนแมโครที่กำหนดคลาสนิรนามด้วยสมาชิกประเภทหรือวิธีการแล้วสร้างอินสแตนซ์ของคลาสนั้นที่พิมพ์แบบคงที่เป็นชนิดโครงสร้างกับวิธีการเหล่านั้นเป็นต้นซึ่งเป็นไปได้กับระบบมาโครใน 2.10 0 และส่วนสมาชิกประเภทนั้นง่ายมาก: object MacroExample extends ReflectionUtils { import scala.language.experimental.macros import scala.reflect.macros.Context def foo(name: String): Any = macro foo_impl def foo_impl(c: Context)(name: c.Expr[String]) = { import c.universe._ val Literal(Constant(lit: String)) = name.tree val anon = newTypeName(c.fresh) c.Expr(Block( ClassDef( Modifiers(Flag.FINAL), anon, Nil, Template( Nil, emptyValDef, List( constructor(c.universe), TypeDef(Modifiers(), newTypeName(lit), Nil, …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.