reflection - Pharo:如何比较不同检查员的对象?

标签 reflection smalltalk pharo inspector

我正在使用 Pharo 4。假设我的对象已经实现了很好的相等和散列方法。

如何在不同的检查员中直观地比较两个或 N 个对象?
视觉上我的意思是并排比较,我可以很容易地看到差异。

我尝试了 allInstances 但一段时间后变得乏味。

最佳答案

您可能会通过查看您在做 GLMBasicExamples open 时可以选择的差异浏览器而获得启发。 .使用 Glamour,您可以轻松创建自定义浏览器来帮助您解决此问题。 diff 示例本身是 15 行代码:

| browser | 
browser := GLMTabulator new.
browser 
    row: [:r | r column: #one; column: #two];
    row: #diff.
browser transmit to: #one; andShow: [ :a |
    a list 
        display: #first ].
browser transmit to: #two; andShow: [ :a | 
    a list
        display: #second ].
browser transmit to: #diff; from: #one; from: #two; andShow: [ :a | 
    a diff
        display: [ :one :two | {one asString . two asString}] ].
browser openOn: #(#(abc def ghi) #(abc xyz))

魅力的差异 View 使用 DiffMorph 来显示差异。它需要两个对象的字符串表示来比较

关于reflection - Pharo:如何比较不同检查员的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35529801/

相关文章:

.net - 确定程序集是否是 .NET 框架的一部分

json - UnmarshalJSON 来自 []interface{} 的任何类型可能吗?

compiler-errors - 注释中的代码正在编译

ubuntu - 无法运行 GNU Smalltalk gst;致命的 : not a git repository (or any of the parent directories): . git

smalltalk - 如何在 Pharo 中对字符串进行驼峰命名?

smalltalk - 使用哪个镜像在Pharo 1.4上部署Seaside 3.0应用程序?

swift - 传递动态类型作为参数

c# - 在反射中调用非静态方法

c# - 关于经典 MVC 的问题

web-services - 如何在Squeak或Pharo中发出HTTPS请求?