Các phương pháp hay nhất cho chức năng Getter
Tôi có một mảng mà tôi muốn hiển thị trên một trang web , unit public x[31]
. Qua web3.js, tôi có thể tạo 32 lệnh gọi khác nhau từ x [0] đến x [31]. Ngoài ra, tôi có thể thêm một hàm getter view vào hợp đồng solidity của mình để chỉ trình bày mảng
function showX()
public
view
returns (uint[32] memory Xout)
{
Xout= x;
}
Với chức năng này được tích hợp sẵn trong hợp đồng vững chắc của tôi, tôi chỉ cần gọi hàm này một lần trong tệp javascript của mình và sau đó có mảng. Do đó, tôi có thể đẩy nhiều công việc hơn vào javascript hoặc solidity. Có phải phương pháp nào hiệu quả hơn / thanh lịch hơn không?
Trả lời
Vì bạn đang xử lý các view
chức năng trong mọi trường hợp không có nhiều sự khác biệt. Dữ liệu được truy xuất trực tiếp từ nút bạn sử dụng và không có giao dịch thực sự nào với blockchain. Do đó, bạn đang sử dụng nhiều hơn tính toán của trình duyệt (JavaScript) hoặc tính toán của nút của bạn. Ngoài ra, những cuộc gọi này không tốn bất kỳ khoản tiền xăng nào.
Từ quan điểm kiến trúc, tôi chỉ đơn giản là xem xét nhu cầu của bạn: nếu bạn có thể không cần truy xuất nhiều mục nhập, thì có thể dễ dàng truy xuất chúng riêng lẻ hơn. Mặt khác, chúng ta có thể đang nói về lượng dữ liệu rất nhỏ, cho dù bạn làm theo cách nào, vì vậy nó không thực sự tạo ra bất kỳ sự khác biệt thực sự nào về tốc độ hoặc yêu cầu bộ nhớ. Tôi cũng không nghĩ cách nào là thanh lịch hơn cách kia - chỉ cần xem xét nhu cầu của bạn.