Я бы хотел написать что-то вроде этого на python:
a = (1, 2)
b = (3, 4)
c = a + b # c would be (4, 6)
d = 3 * b # d would be (9, 12)
Я понимаю что вы можете перегружать операторы для работы с пользовательскими классами, но есть ли способ перегрузить операторы для работы с парами?
Конечно, такие решения, как
c = tuple([x+y for x, y in zip(a, b)])
, работают, но, не говоря уже о производительности, они не совсем так же красиво, как перегрузка оператора +
.
Конечно, можно определить функции add
и mul
, такие как
def add((x1, y1), (x2, y2)):
return (x1 + x2, y1 + y2)
def mul(a, (x, y)):
return (a * x, a * y)
, но по-прежнему иметь возможность писать q * b + r
вместо ] add (times (q, b), r)
было бы лучше.
Идеи?
EDIT : Кстати, я понимаю, что, поскольку +
в настоящее время отображает для конкатенации кортежей, было бы неразумно пересматривать его, даже если это возможно. Вопрос по-прежнему актуален для -
, например =)