mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-22 04:20:17 +00:00
...
This commit is contained in:
parent
c0866022fb
commit
d8f3a53220
@ -1188,10 +1188,19 @@ void init_builtins(VM* _vm) {
|
|||||||
if(!ok) vm->KeyError(key);
|
if(!ok) vm->KeyError(key);
|
||||||
});
|
});
|
||||||
|
|
||||||
_vm->bind_method<1>("dict", "pop", [](VM* vm, ArgsView args) {
|
_vm->bind_method<-1>("dict", "pop", [](VM* vm, ArgsView args) {
|
||||||
|
if(args.size() != 2 && args.size() != 3){
|
||||||
|
vm->TypeError("pop() expected 1 or 2 arguments");
|
||||||
|
return vm->None;
|
||||||
|
}
|
||||||
Dict& self = _CAST(Dict&, args[0]);
|
Dict& self = _CAST(Dict&, args[0]);
|
||||||
PyObject* value = self.try_get(args[1]);
|
PyObject* value = self.try_get(args[1]);
|
||||||
if(value == nullptr) vm->KeyError(args[1]);
|
if(value == nullptr){
|
||||||
|
if(args.size() == 2) vm->KeyError(args[1]);
|
||||||
|
if(args.size() == 3){
|
||||||
|
return args[2];
|
||||||
|
}
|
||||||
|
}
|
||||||
self.erase(args[1]);
|
self.erase(args[1]);
|
||||||
return value;
|
return value;
|
||||||
});
|
});
|
||||||
|
@ -125,4 +125,20 @@ for i in range(len(data)):
|
|||||||
b.append(z)
|
b.append(z)
|
||||||
if i % 3 == 0:
|
if i % 3 == 0:
|
||||||
y = b.pop()
|
y = b.pop()
|
||||||
del a[y]
|
del a[y]
|
||||||
|
|
||||||
|
a = {1: 2, 3: 4}
|
||||||
|
assert a.pop(1) == 2
|
||||||
|
try:
|
||||||
|
a.pop(1)
|
||||||
|
exit(1)
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
assert a.pop(1, None) is None
|
||||||
|
|
||||||
|
try:
|
||||||
|
a.pop(1, 2, 3)
|
||||||
|
exit(1)
|
||||||
|
except TypeError:
|
||||||
|
pass
|
||||||
|
Loading…
x
Reference in New Issue
Block a user