могли бы вы объяснить, почему следующий код является неправильным:Powerset - Smalltalk
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:
Давайте assumet, что POWERSET переменной пс равна:
{{empty}, {a}, {b}, {a,b}}
и п = с. метод addToPowerSet должен возвращать:
{
{empty}, {a}, {b}, {a,b},
{c}, {a, c}, {b, c}, {a,b,c}
}
Вопросы, касающиеся проблем с кодом Вы написали должны описать конкретную проблему - и включают в себя правильный код, чтобы воспроизвести его - в самом вопросе. См. Руководство SSCCE.org. – Marcin
Какой маленький штрих вы используете? Каков ваш ожидаемый результат? – camillobruni
@camillobruni Я использую Dolphin Smalltalk X6 – JosephConrad