Merge pull request #283 from 16bit-ykiko/doc

Update README.
This commit is contained in:
BLUELOVETH 2024-06-19 14:24:35 +08:00 committed by GitHub
commit 475be8ce80
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -91,39 +91,33 @@ python scripts/run_tests.py
### Example
```cpp
#include "pocketpy.h"
#include <pybind11/pybind11.h>
using namespace pkpy;
namespace py = pybind11;
int main() {
// Create a virtual machine
VM* vm = new VM();
// Start the interpreter
py::scoped_interpreter guard{};
// Hello world!
vm->exec("print('Hello world!')");
py::exec("print('Hello world!')");
// Create a list
vm->exec("a = [1, 2, 3]");
py::exec("a = [1, 2, 3]");
// Eval the sum of the list
PyVar result = vm->eval("sum(a)");
std::cout << "Sum of the list: "<< py_cast<int>(vm, result) << std::endl; // 6
auto result = py::eval("sum(a)");
std::cout << "Sum of the list: " << result.cast<int>() << std::endl; // 6
// Bindings
vm->bind(vm->_main, "add(a: int, b: int)",
[](VM* vm, ArgsView args){
int a = py_cast<int>(vm, args[0]);
int b = py_cast<int>(vm, args[1]);
return py_var(vm, a + b);
auto m = py::module_::__main__();
m.def("add", [](int a, int b) {
return a + b;
});
// Call the function
PyVar f_add = vm->_main->attr("add");
result = vm->call(f_add, py_var(vm, 3), py_var(vm, 7));
std::cout << "Sum of 2 variables: "<< py_cast<int>(vm, result) << std::endl; // 10
std::cout << "Sum of 2 variables: " << m.attr("add")(1, 2).cast<int>() << std::endl; // 10
// Dispose the virtual machine
delete vm;
return 0;
}
```