Artyom
sum(твойлист, элемент_ноль)
Artyom
можешь еще сделать что то вроде
Alex
ну или второй аргумент у сам
у него не совсем честный sum, поэтому скорее reduce.
Alex
в смысле `__add__`
âDêšwu öBipci
sum(твойлист, элемент_ноль)
А лист первым аргументом полностью передавать или без первого элемента?
Artyom
у него не совсем честный sum, поэтому скорее reduce.
sum c начальным значением, эквивалентен редьюсу
Artyom
есть еще проще вариант
Artyom
вернее круче
Alex
sum c начальным значением, эквивалентен редьюсу
ага, но костыли. reduce сам обрабатывает начальное значение если не задано явно
Artyom
перегрузи def __radd__(other): if other == 0: return self raise NotImplementedError()
Artyom
это обратный оператор суммы, если для левого операнда не найден add он их местами поменяет
Artyom
и тогда sum будет работать как ожидается
Anonymous
Ребзя
Anonymous
Нит хелп
Anonymous
Кто по железу спец
c
Нит хелп
нометой что ли тыкнуть
Artyom
мсье знает толк в извращениях
помоему классное решение, инкапсуляция логики, и sum работает как хочешь)
Alex
это обратный оператор суммы, если для левого операнда не найден add он их местами поменяет
ты ведь понимаешь что семантически его класс не может или не должен работать с интами?
Artyom
что семантически может вписаться, учитывая что класс поддерживапет сложение
âDêšwu öBipci
sum его и дергает
Буду знать.
Artyom
сложение не значит сложение с нулем
подразумаевается что 0 будет эквивалентен инстансу с нулями внутри
Artyom
я не считаю это костылем
âDêšwu öBipci
Artyom
Alex
Artyom
схуляли?
это может вписаться в логику парня который это пишет, если вписывается, то это отличное решение
Alex
a + 0 может быть некорректной операцией для некоторых типов.
Pavel
так что a + 0 = a
то есть ты... определил операцию "сложить" и разрешил её выполнение только с условным нейтральным по сложению? НАХУЯ?
Artyom
a + 0 может быть некорректной операцией для некоторых типов.
я добавил минимум ub, проверив что сложение идет с нулем
Alex
ты случайно не из PHP вылез?
Artyom
повторю вопрос, пожалуй
результат работы sum в таком случае, будет более чем ожидаемым
Alex
результат работы sum в таком случае, будет более чем ожидаемым
а результат операции сложения кастомного типа с нулем - нихуя не ожидаемым
Artyom
а результат операции сложения кастомного типа с нулем - нихуя не ожидаемым
ну сложение с 0 впринципе довольно тривиальная операция, что бы быть неожидаемой
Artyom
что то типа реализации паттерна null object
Well Done
-- ***** не понятно, но очень интересно
Artyom
если сущность можно сложить, значит она подчиняется какой то алгебре, операция 0 + a = a. довольно стандартная для алгебр, в которых привык работать человек
Alex
что ты под этим понимаешь
математическое числовое поле
Artyom
если этот класс не пересекается логически с числами, то сложение с нулем не введет никаких ub
Artyom
а ты уверен, что твой a и 0 принадлежат одному полю?
этой операцией я ввел 0 в поле этих сущностей
Artyom
так что ответ скорее да
Artyom
у тебя есть юзкейс, где это решение причинит вред?
Artyom
я к строке не добавлял этого сложения
Artyom
тут как все было, так и останется
Alex
я к строке не добавлял этого сложения
кто сказал что кастомным типом не может быть строка?
Artyom
кто сказал что кастомным типом не может быть строка?
речь шла о типе, который использовал @ArtemisFaul
Pavel
этой операцией я ввел 0 в поле этих сущностей
это вместо того, чтобы ввести нейтральный элемент класса и скормить его sum в качеству start?
Alex
речь шла о типе, который использовал @ArtemisFaul
речь о семантике типов и алгебраических множествах.
Pavel
у тебя есть юзкейс, где это решение причинит вред?
у меня есть вопросы по осмысленности этого решения
Artyom
это вместо того, чтобы ввести нейтральный элемент класса и скормить его sum в качеству start?
зачем каждый раз кормить, если можно добавить оператор, и пользоваться sumкак и пользовался для этого
Artyom
речь о семантике типов и алгебраических множествах.
речь шла о типе парня который писал этот код
Artyom
в редюсь тебе оператор придется передать
Pavel
зачем писать лишний код
чтобы не писать говнокод
Artyom
sum(list_of_obj) - говнокод?
Artyom
вот говнокод
это безаргументное утверждение
Pavel
то, что его нет в вызове sum, не значит, что его нет
Alex
речь шла о типе парня который писал этот код
во-первых ты начал заливать про хотя бы один пример. во-вторых ты не знаешь что у ТС конкретно за тип и какие к нему выдвигаются требования.
Pavel
это безаргументное утверждение
аргументов тебе и я и @cutwater уже принесли
Artyom
во-первых ты начал заливать про хотя бы один пример. во-вторых ты не знаешь что у ТС конкретно за тип и какие к нему выдвигаются требования.
я и не сказал, что это решение ему стопроцентов подойдет, я его предложил, и если оно впишется в его логигку, оно будет неплохим
Alex
повторю вопрос, ты случайно не из PHP вылез?
Artyom
нет