Комментарии 9
НЛО прилетело и опубликовало эту надпись здесь
плохой пример… матрица сама должна знать как тебя итерировать…
-1
С точки зрения ООП, наверно, Вы правы, однако хотелось показать реализацию известной операции средствами Smalltalk в рамках одного метода. Не видел смысла усложнять.
0
в том-то и дело, что получился сложный для понимания код. 5 маленьких функций понять проще, чем одну большую
я бы предпочёл чот-то типа такого:
r forEachCell: [ :rCell |
rCell put: 0.
sRow:= self rowAt ( rCell get: row ).
rcColumn:= rcMatrix columnAt ( rCell get: column ).
sRow forEachCell: [ :sCell |
rcell add: sCell *( rcColumn cellAt: ( sCell get: column ) )
].
].
я бы предпочёл чот-то типа такого:
r forEachCell: [ :rCell |
rCell put: 0.
sRow:= self rowAt ( rCell get: row ).
rcColumn:= rcMatrix columnAt ( rCell get: column ).
sRow forEachCell: [ :sCell |
rcell add: sCell *( rcColumn cellAt: ( sCell get: column ) )
].
].
0
Все же видимо Вы имели ввиду:
sRow:= self rowAt ( rCell getRow)
и
rCell getСolumn
?
Увы тут не получится обойтись 5-ю маленькими методами. Необходимо будет как минимум:
— определить итератор по матрице (forEachCell);
— определить класс вектора, метод cellAt и итератор (forEachCell) для него;
— определить методы rowAt, columnAt для матрицы, возвращающие вектора;
— определить класс ячейки (Cell), для которой добавить аксессоры (put, add, getColumn, getRow)
Несколько много для простого примера, реализующего одну формулу:
для матриц с размерами m x n и p x q.
sRow:= self rowAt ( rCell getRow)
и
rCell getСolumn
?
Увы тут не получится обойтись 5-ю маленькими методами. Необходимо будет как минимум:
— определить итератор по матрице (forEachCell);
— определить класс вектора, метод cellAt и итератор (forEachCell) для него;
— определить методы rowAt, columnAt для матрицы, возвращающие вектора;
— определить класс ячейки (Cell), для которой добавить аксессоры (put, add, getColumn, getRow)
Несколько много для простого примера, реализующего одну формулу:
для матриц с размерами m x n и p x q.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Заметка о синтаксисе Smalltalk