Наличие в классе SELECTABLE
действительно является решением:
select (a: ANY)
deferred
end
Другое решение заключается в использовании TUPLE
:
select (a: TUPLE)
deferred
end
Это позволяет вам иметь более одного аргумента в классах-потомках:
select (a: TUPLE [db_connection: DB_CONNECTION])
do
a.db_connection.do_something
end
, который можно назвать:
a_db_server.select (a_db_connection)
или
select (a: TUPLE [db_connection: DB_CONNECTION; db_parameters: DB_PARAMETERS])
do
a.db_connection.do_something (a.db_parameters)
end
который можно назвать:
a_db_server.select (a_db_connection, a_dp_parameters)
Обратите внимание, что в этом случае необходимость явной записи кортежа [...]
в аргументе select
является необязательной.
И, конечно же, select
- это ключевое слово в Eiffel. Вам нужно будет использовать другое имя для вашей функции.