แนวทางปฏิบัติที่ดีที่สุดสำหรับฟังก์ชัน Getter
unit public x[31]
ฉันมีอาร์เรย์ที่ฉันต้องการที่จะแสดงผลบนเว็บไซต์ ผ่าน web3.js ฉันสามารถสร้างการเรียกที่แตกต่างกัน 32 คำไปยัง x [0] ถึง x [31] อีกวิธีหนึ่งคือฉันสามารถเพิ่มฟังก์ชัน getter view ให้กับสัญญา solidity ของฉันที่แสดงอาร์เรย์ได้
function showX()
public
view
returns (uint[32] memory Xout)
{
Xout= x;
}
ด้วยฟังก์ชั่นนี้ในตัวของสัญญา solidity ของฉันฉันเพียงแค่ต้องเรียกสิ่งนี้หนึ่งครั้งในไฟล์จาวาสคริปต์ของฉันจากนั้นจึงมีอาร์เรย์ ดังนั้นฉันสามารถผลักดันงานให้มากขึ้นในจาวาสคริปต์หรือความมั่นคง ทั้งสองวิธีมีประสิทธิภาพ / สง่างามกว่าหรือไม่?
คำตอบ
ในขณะที่คุณกำลังจัดการกับview
ฟังก์ชันไม่ว่าในกรณีใด ๆ จะไม่มีความแตกต่างมากนัก ข้อมูลจะถูกดึงมาจากโหนดที่คุณใช้โดยตรงและไม่มีธุรกรรมที่แท้จริงไปยังบล็อกเชน ดังนั้นคุณจึงใช้การประมวลผลของเบราว์เซอร์ (JavaScript) หรือการประมวลผลโหนดของคุณมากขึ้น นอกจากนี้การโทรเหล่านี้ไม่เสียค่าใช้จ่ายใด ๆ
จากมุมมองทางสถาปัตยกรรมฉันจะพิจารณาความต้องการของคุณ: หากคุณอาจไม่จำเป็นต้องดึงข้อมูลหลายรายการการดึงข้อมูลทีละรายการอาจง่ายกว่า ในทางกลับกันเราอาจพูดถึงปริมาณข้อมูลที่ไม่สำคัญมากไม่ว่าคุณจะทำด้วยวิธีใดดังนั้นจึงไม่ได้สร้างความแตกต่างอย่างแท้จริงในแง่ของความเร็วหรือความต้องการหน่วยความจำ ฉันไม่คิดว่าวิธีใดจะสง่างามกว่าวิธีอื่น - เพียงแค่พิจารณาความต้องการของคุณ