Учитывая набор классов кортежей на языке ООП: Pair, Triple и Quad, должен ли Triple подклассы Pair и Quad подкласс Triple?? 1001 *
Вопрос, на мой взгляд, заключается в том, следует ли заменять тройку в качестве пары, а также четверку на тройку или пару. Является ли Triple также парой, а Quad также тройкой и парой.
В одном контексте такие отношения могут быть полезны для расширяемости - сегодня эта вещь возвращает пару вещей, завтра мне нужно вернуть тройку, не нарушая существующих абонентов, которые используют только первые два из трех.
С другой стороны, должны ли они быть разными типами? Я вижу выгоду в более строгой проверке типов - когда вы не можете передать Triple в метод, который ожидает пару.
Я склоняюсь к использованию наследования, но был бы очень признателен за мнение других?
PS: В случае, если это имеет значение, классы (конечно) будут общими.
PPS: На более субъективной стороне имена должны быть Tuple2, Tuple3 и Tuple4?
Редактировать: Я думаю об этом скорее как о слабо связанных группах; не специально для таких вещей, как координаты x / y x / y / z, хотя они могут использоваться для таких целей. Это может быть как общее решение для нескольких возвращаемых значений из метода, но в форме с очень простой семантикой.
Тем не менее, мне интересны все способы, которыми другие фактически использовали кортежи.