Здравствуйте, DemAS, Вы писали:
DAS>Что-то там:
DAS>DAS>def initialize(......, x)
DAS> super(.....)
DAS> @x = x
DAS>end
DAS>
DAS>Как это можно сделать ?
Например, так:
def initialize(*arg, &block)
@x = arg.pop
super(*arg, &block)
end
(но вообще-то, принципы объектно-ориентированного дизайна кагбэ намекают нам, что двухмерный массив — вряд ли наследник массива одномерного; а документация стандартной библиотеки кагбэ намекает нам на наличие класса
Matrix)
Есть класс — наследник Array; хочется переопределить его конструктор,
добавив туда один параметр, но так, чтобы не потерять все возможности
инициализации от стандартного класса.
То есть, сейчас примерно так:
class Array2D < Array
def set_x(x)
@x = x
end
def [] (x, y)
return super(y * @x + x)
end
end
a = Array2D.new(10) { |i| i }
a.set_x(2)
puts a[1, 1]
@x — размерность массива по горизонтали.
Хочется передавать это значение не через вызов отдельного метода set_x(), а
в конструкторе.
Что-то там:
def initialize(......, x)
super(.....)
@x = x
end
Как это можно сделать ?
Posted via RSDN NNTP Server 2.1 beta