1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | fun main(args : Array<String>) : Unit{ val x = a{ aa{ + "01.01" + "01.02" } aa{ + "02.01" + "02.02" } } print(x) } fun a(p : A.()->Unit) : A { val a = A() a.p() return a; } class A { val children = arrayListOf<AA>() fun aa(p : AA.()->Unit){ val aa = AA(); aa.p(); children.add(aa); } override fun toString() : String { val builder = StringBuilder( "<a>" ) children.forEach { builder.append(it.toString()) } builder.append( "\r\n</a>" ) return builder.toString(); } } class AA { val children = arrayListOf<String>() operator fun String.unaryPlus() { children.add( "\r\n\t\t<text>${this}</text>" ) } override fun toString() : String { val builder = StringBuilder( "\r\n\t<aa>" ) children.forEach { builder.append(it.toString()) } builder.append( "\r\n\t</aa>" ) return builder.toString(); } } |
执行结果
<a> <aa> <text>01.01</text> <text>01.02</text> </aa> <aa> <text>02.01</text> <text>02.02</text> </aa> </a>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | import java.util.* import List.Companion.list import Map.Companion.map fun main(args : Array<String>) : Unit { val x = list { values( "a" , "b" , "c" ) list { values( "a" , "b" , "c" ) map { values( "name" to "Fred" ) } } map { values( "name" to "Fred" , "age" to "28" , "fav" to list { values( "java" , "c++" , "kotlin" ) } ) } } val y = map { values( "languages" to list { values( "java" , "c++" , "perl" ) values( "scala" , "kotlin" , "ruby" ) }) } println(x) println(y) } class List : ArrayList<Any>() { companion object { fun list(p : List.() -> Unit) : List { val l = List() l.p() return l } } fun values(vararg x : Any) { this .addAll(x) } fun list(p : List.() -> Unit) { val l = List() l.p() this .add(l as Any) } fun map(p : Map.() -> Unit) { val m = Map() m.p() this .add(m as Any) } } class Map : HashMap<String, Any>() { companion object { fun map(p : Map.() -> Unit) : Map { val m = Map() m.p() return m } } fun values(vararg x : Pair<String, Any>) { this .putAll(x) } fun list(p : List.() -> Unit) : List { val l = List() l.p() return l; } fun map(p : Map.() -> Unit) : Map { val m = Map() m.p() return m } } |
执行结果
[a, b, c, [a, b, c, {name=Fred}], {name=Fred, fav=[java, c++, kotlin], age=28}]
{languages=[java, c++, perl, scala, kotlin, ruby]}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步