You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pharo中如何将普通对象数组以表格格式展示

Pharo 中 Candle 对象数组的表格输出实现

我持有一组Candle对象组成的普通数组,结构参考如下:
Candle对象数组示例截图
需要将数组输出为如下对齐格式的表格:

|       date | open | high | low | close |
|------------+------+------+-----+-------|
| 2018-12-28 |   10 |   20 |  30 |    40 |
| 2019-12-28 |   50 |   60 |  70 |    80 |

纯文本表格输出方法

不需要安装额外依赖、不需要自定义集合类,直接在Pharo里写少量代码就能实现普通数组的对齐文本表格输出:

  • 核心逻辑是先统计每列(表头+所有行内容)的最大字符宽度,再按宽度做左右对齐,最后拼接表头、分隔线和数据行即可。
  • 可直接复用的实现代码片段:
"配置列:每列的表头名 + 从Candle对象取对应值的方法"
columnDefs := {
    'date' -> #date.
    'open' -> #open.
    'high' -> #high.
    'low' -> #low.
    'close' -> #close
}.

"计算每列需要的显示宽度"
colWidths := columnDefs collect: [ :def |
    headerWidth := def key size.
    contentMaxWidth := (candleArray collect: [ :c | (c perform: def value) asString size ]) max.
    headerWidth max: contentMaxWidth
].

"拼接表头行"
headerLine := '| ' , (columnDefs with: colWidths collect: [ :def :w |
    def key padRightTo: w
]) joinUsing: ' | ' , ' |'.

"拼接表头和内容之间的分隔线"
splitLine := '|' , (colWidths collect: [ :w |
    '-' repeat: w + 2
]) joinUsing: '+' , '|'.

"拼接所有数据行"
dataLines := candleArray collect: [ :c |
    '| ' , (columnDefs with: colWidths collect: [ :def :w |
        ((c perform: def value) asString padLeftTo: w)
    ]) joinUsing: ' | ' , ' |'
].

"组合成完整表格输出"
tableContent := { headerLine. splitLine }, dataLines joinUsing: String cr.
Transcript show: tableContent.
  • 把代码里的candleArray替换成你持有的实际数组变量,执行后就能在Transcript里得到对齐的目标格式表格。

Glamorous Toolkit 可视化表格方案

GT的表格展示能力参考如下:
gtoolkit演示截图
该能力不需要自定义专门的Candle集合类就能直接适配普通数组:

  • 临时快速展示的场景完全不用写代码:在Playground里选中你的Candle数组打开检视器,点击检视器顶部的+按钮添加列,依次给每列绑定date/open/high/low/close的取值逻辑,就能即时生成可交互的表格视图。
  • 如果需要长期复用这个视图,也不用新建集合类:直接给Array类写一个带GT pragma的扩展方法,方法内判断数组元素为Candle类型时渲染对应列的表格即可,所有存放Candle对象的普通数组都能自动显示这个表格视图。
  • 新建专属集合类的方案只适合你要给K线数据封装专属业务逻辑的场景,普通展示需求用上述两种轻量方案就足够,GT原生支持直接给普通数组配置表格视图。

内容的提问来源于stack exchange,提问作者dharmatech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 16:09:11