你能解释一下为什么下面的代码是错误的:
powerset
|ps|
ps := Set with: (Set new).
self do: [:item | ps addToPowerSet: item].
^ps
addToPowerSet: elt
| first second third var |
first := self copy.
second := self copy.
third := Set new.
second do: [:item | var := item copy. var add: elt. third add: var.].
^ first addAll: third
这两种方法都在 Set 类中实现。我试图调试它,我想错误就在这里:
second do: [:item | var := item copy. var add: elt. third add: var.].
但我不知道具体是什么。
好的,addToPowerSet 方法的示例:
让我们假设 powerset 变量 ps 是相等的:
{{empty}, {a}, {b}, {a,b}}
和项目= c。addToPowerSet 方法应该返回:
{
{empty}, {a}, {b}, {a,b},
{c}, {a, c}, {b, c}, {a,b,c}
}