- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
class list(list):
def __call__(self, *args):
if len(args) == 0:
return self[:]
res = []
for i in args:
if type(i) == int:
res.append(self[i])
else:
res.append(self(*i) if len(i) != 1 else [[[self(0)]]])
return res
a = list(map(lambda x: x * x, range(10)))
print(a(1,0,(6,6,(5,4,3,(0)),6),3,2,(),8,))
(42,)
Я вообще в целом не считаю что на скриптовых языках надо писать сложные программы. Скриптовые языки для скриптов, для glue code. А люди напишут на нем социальную сеть, а потом ябуца в жопу
Но работаю где-то на 6, иначе как это потом читать?
Что сьранно, hui.append([2]) добавляет список с одним елементом, а в моём коде вынимает всё нахуй
А в 10-й строчке res.append(self(*i))
Сую неправильные данные и ошиппку ищу не ту :D
Можно создать хелпер для чужого класса. Он будет выглядеть так, как будто мы в класс добавили метод:
https://www.freepascal.org/docs-html/current/ref/refse61.html
Можно создать хелпер для простых типов. Даже для целого питуха:
https://www.freepascal.org/docs-html/current/ref/refse63.html
В «C#» и в «Java» (про «Кокококотлин» не скажу, я его пока не трогал) всё является объектом, даже небо, даже Аллах (помним прикол с порчей кэша мелких чисел?), поэтому экстеншен методы в теории возможны для всего.
В «ObjC» нет методов в классическом для статически типизированных языков смысле. Там у объекта есть диспетчер, кокококоторый принимает сообщения.
А вот добавление подобных расширений в язык совершенно другой категории немного неожиданно. Хотя по сути это же всего лишь синтаксический сахар: невиртуальный метод —– это просто функция, в кококоторую первым аргументом неявно передаётся this/self.