mirror of
https://github.com/RustPython/RustPython.git
synced 2026-10-28 18:59:04 +08:00
Implement array __repr__
This commit is contained in:
1 parent
92d8e2c8da
commit
187afa4e4a
1 file changed
+19
@@ -236,6 +236,20 @@ macro_rules! def_array_enum {
|
||||
}
|
||||
}
|
||||
|
||||
fn repr(&self, _vm: &VirtualMachine) -> PyResult<String> {
|
||||
// we don't need ReprGuard here
|
||||
let s = match self {
|
||||
$(ArrayContentType::$n(v) => {
|
||||
if v.is_empty() {
|
||||
format!("array('{}')", $c)
|
||||
} else {
|
||||
format!("array('{}', [{}])", $c, v.iter().map(|x| x.to_string()).join(", "))
|
||||
}
|
||||
})*
|
||||
};
|
||||
Ok(s)
|
||||
}
|
||||
|
||||
fn iter<'a>(&'a self, vm: &'a VirtualMachine) -> impl Iterator<Item = PyObjectRef> + 'a {
|
||||
let mut i = 0;
|
||||
std::iter::from_fn(move || {
|
||||
@@ -443,6 +457,11 @@ impl PyArray {
|
||||
self.borrow_value_mut().setitem(needle, obj, vm)
|
||||
}
|
||||
|
||||
#[pymethod(name = "__repr__")]
|
||||
fn repr(zelf: PyRef<Self>, vm: &VirtualMachine) -> PyResult<String> {
|
||||
zelf.borrow_value().repr(vm)
|
||||
}
|
||||
|
||||
#[pymethod(name = "__eq__")]
|
||||
fn eq(&self, other: PyObjectRef, vm: &VirtualMachine) -> PyResult<PyComparisonValue> {
|
||||
let lhs = self.borrow_value();
|
||||
|
||||
Reference in new issue
Block a user