From 94b4bf94cf27fbb78b1124ef29f54cb0918d06e4 Mon Sep 17 00:00:00 2001 From: Luke Date: Mon, 1 Sep 2025 16:53:16 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=20StructNode=20?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 init 参数改为 inits,支持多个构造函数 - 优化 toString 方法的实现,提高可读性和性能 --- .../snow/compiler/parser/ast/StructNode.java | 26 +++++++------------ 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/jcnc/snow/compiler/parser/ast/StructNode.java b/src/main/java/org/jcnc/snow/compiler/parser/ast/StructNode.java index 488933a..b558157 100644 --- a/src/main/java/org/jcnc/snow/compiler/parser/ast/StructNode.java +++ b/src/main/java/org/jcnc/snow/compiler/parser/ast/StructNode.java @@ -20,7 +20,7 @@ import java.util.StringJoiner; * @param name 结构体名称 * @param parent 父类名称(无继承时为 {@code null}) * @param fields 字段声明列表 - * @param init 构造函数(可为 null) + * @param inits 构造函数(可为 null) * @param methods 方法列表 * @param context 源码位置信息 */ @@ -28,7 +28,7 @@ public record StructNode( String name, String parent, List fields, - FunctionNode init, + List inits, List methods, NodeContext context ) implements Node { @@ -40,19 +40,13 @@ public record StructNode( */ @Override public String toString() { - // 1) 构造字段声明的字符串(类型+名称) - StringJoiner fj = new StringJoiner(", "); - fields.forEach(d -> fj.add(d.getType() + " " + d.getName())); - - // 2) 构造方法名列表字符串 - StringJoiner mj = new StringJoiner(", "); - methods.forEach(f -> mj.add(f.name())); - - // 3) 合成最终输出 - return "Struct(name=" + name + - ", parent=" + (parent == null ? "null" : parent) + - ", fields=[" + fj + "], init=" + - (init == null ? "null" : init.name()) + - ", methods=[" + mj + "])"; + return new StringJoiner(", ", "StructNode[", "]") + .add("name=" + name) + .add("parent=" + parent) + .add("fields=" + fields.size()) + .add("ctors=" + (inits == null ? 0 : inits.size())) + .add("methods=" + methods.size()) + .toString(); } + }