主要观点:6 月曾尝试在 Processing 4 中运行功能性 UI 的大爆炸模型,因 Processing 使用的 Java 方言早于Java Records (JEP395),所以创造性地使用m4)作为预处理器,生成的宏可将特定代码片段转换为另一种形式。
关键信息:时间为 2024 年 7 月 22 日周一 07:21 EDT;Processing 相关情况;m4 作为预处理器;宏的具体转换内容等。
重要细节:宏的具体定义和代码形式,如_record等相关定义及转换逻辑等。具体如下:
/* -*- mode: java; c-basic-offset: 2 -*- */
changecom(`//')dnl
changequote(`{{',`}}')dnl
dnl);
define({{_record}}, {{class $1 {_record_fields($2,)
public _record_classname($1)($2) {_record_inits($2,)
}
$3dnl;
}{{}}}})dnl;
define({{_record_fields}}, {{ifelse({{$#}}, {{1}},, {{
public final $1;$0(shift($@))}})}})dnl;
define({{_record_inits}}, {{ifelse({{$#}}, {{1}},, {{
this._record_fieldname({{$1}}) = _record_fieldname({{$1}});$0(shift($@))}})}})dnl;
define({{_record_classname}}, {{regexp({{$1}}, {{^\(\w+\).*$}}, {{\1}})}})dnl;
define({{_record_fieldname}}, {{regexp({{$1}}, {{^.+\s\(\w+\)$}}, {{\1}})}})dnl;
dnl;//---------------------------------------------------------------------------
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。