Lección 2

ทำความเข้าใจไวยากรณ์และแนวคิดพื้นฐานของ Vyper

เตรียมเจาะลึกสู่โลกของสัญญาอัจฉริยะ Ethereum กับ Vyper ในอนาคต ในบทที่ 3 เราจะดูหลักการ Vyper ที่ซับซ้อนยิ่งขึ้น เราจะใช้แนวทางที่ลงมือปฏิบัติจริงมากขึ้น โดยมุ่งเน้นที่การออกแบบ การนำไปใช้ และการโต้ตอบกับสัญญาอัจฉริยะบนเครือข่าย Ethereum

รู้เบื้องต้นเกี่ยวกับไวยากรณ์ของ Vyper

คอมพิวเตอร์ก็เหมือนกับผู้คนที่สื่อสารด้วยภาษาที่หลากหลาย Solidity และ Vyper เป็นสองภาษาที่โดดเด่นในขอบเขตบล็อกเชนของ Ethereum เราได้แนะนำ Vyper ซึ่งเป็นภาษาการเขียนโปรแกรมสัญญาอัจฉริยะ Ethereum และเปรียบเทียบกับ Solidity ในบทที่ 1 ในส่วนนี้ เราจะเจาะลึกเข้าไปในไวยากรณ์ของ Vyper ซึ่งคล้ายกับของ Python อย่างมาก เป้าหมายประการหนึ่งของ Vyper คือการทำให้การเขียนโค้ดสัญญาอัจฉริยะง่ายขึ้นโดยยังคงรักษาความปลอดภัยที่ดีเอาไว้ ไวยากรณ์ของมันถูกตั้งใจให้เรียบง่ายและตรงไปตรงมาที่สุดเท่าที่จะเป็นไปได้ คุณจะรู้สึกเหมือนอยู่บ้านอย่างสมบูรณ์แบบหากคุณเป็นผู้เขียนโค้ด Python แม้ว่าคุณจะไม่ใช่ก็ตาม แต่ไวยากรณ์ที่เหมือน Python ของ Vyper นั้นง่ายต่อการเรียนรู้ มาดูส่วนประกอบทางวากยสัมพันธ์หลักของ Vyper กัน

Python 
 # นี่คือความคิดเห็นใน Vyper 
 @external 
 def ทักทาย (ชื่อ: string[10]) -> string[30]: 
 return concat("Hello, ", name, "!")

ประเภทข้อมูลพื้นฐานใน Vyper

ชนิดข้อมูล เป็นส่วนสำคัญของภาษาการเขียนโปรแกรมใดๆ พวกเขากำหนดประเภทของข้อมูลที่สามารถจัดเก็บและจัดการภายในโปรแกรมได้ มาดูประเภทข้อมูลพื้นฐานที่ Vyper นำเสนอกันดีกว่า:

  • บูลีน: นี่คือชนิดข้อมูลไบนารีที่สามารถมีค่าที่เป็นไปได้ค่าใดค่าหนึ่งจากสองค่า จริงหรือเท็จ ตัวอย่าง: flag: bool = True
  • จำนวนเต็ม: Vyper รองรับจำนวนเต็มซึ่งเป็นจำนวนเต็มที่สามารถเป็นได้ทั้งบวก ลบ หรือศูนย์ มีหลายขนาดตั้งแต่ 8 ถึง 256 บิต โดยขนาดที่พบบ่อยที่สุดคือ int128 ตัวอย่าง: count: int128 = 10
  • ทศนิยม: ใช้เพื่อแสดงตัวเลขทศนิยม เช่น ตัวเลขที่มีจุดทศนิยม ตัวอย่าง: price: decimal = 123.45
  • ไบต์และสตริง: ไบต์คือลำดับของข้อมูลไบต์ ในขณะที่สตริงคือลำดับของอักขระ Unicode ตัวอย่าง: name: string[20] = 'Alice'
  • รายการและอาร์เรย์: รายการคือชุดของรายการประเภทข้อมูลเดียวกัน ในทางกลับกัน อาร์เรย์เป็นรายการประเภทพิเศษที่มีความยาวคงที่ ตัวอย่าง: numbers: int128[5] = [1, 2, 3, 4, 5]
    ข้อมูลแต่ละประเภทเหล่านี้มีหน้าที่ในการเขียนสัญญาอัจฉริยะเป็นของตัวเอง คุณจะต้องเลือกประเภทข้อมูลที่เหมาะสมสำหรับข้อมูลแต่ละชิ้นที่คุณต้องการจัดเก็บ โดยขึ้นอยู่กับประเภทการดำเนินการที่คุณต้องการดำเนินการกับข้อมูลนั้น

สรุปค่าบางค่าที่มีอยู่ใน Vyper:

  • บูล
  • int128
  • uint256
  • ทศนิยม
  • ที่อยู่
  • ไบต์ 32
  • ไบต์
  • สตริง
Python 
 # @version ^0.3.7 

 b: public(bool) 
 i: public(int128) # -2 ** 127 ถึง (2 ** 127 - 1) 
 u: public(uint256) # 0 ถึง 2 * * 256 - 1 
 ธันวาคม: สาธารณะ(ทศนิยม) # -2 ** 127 ถึง (2 ** 127 - 1), ทศนิยม 10 ตำแหน่ง 
 addr: สาธารณะ(ที่อยู่) 
 b32: สาธารณะ(bytes32) 
 bs: สาธารณะ(ไบต์ [100]) 
 วินาที: สาธารณะ (สตริง [100]) 


 @ ภายนอก 
 def __init__(): 
 self.b = เท็จ 
 self.i = -1 
 ตัวเอง.u = 123 
 ตัวเอง.dec = 3.14 
 ตัวเอง.addr = 0x704534A22F03Ea46f76A07a195568D115E2e6d52 
 ตัวเอง.b32 = 0xada1b75f8ae9a65dcc16f95678ac203030505c6b465c8206e2 6ae84b525cdacb 
 ตัวเอง.bs = b"\x01" 
 ตัวเอง = "สวัสดีไวเปอร์"

ฟังก์ชั่นใน Vyper

ฟังก์ชั่นใน Vyper ก็เหมือนกับภาษาอื่นๆ มากมาย คือบล็อกของโค้ดที่นำมาใช้ซ้ำได้ซึ่งทำหน้าที่เฉพาะเจาะจง พวกมันให้ความเป็นโมดูลที่ดีกว่าสำหรับแอปพลิเคชันของคุณ และช่วยให้โค้ดสามารถนำกลับมาใช้ใหม่ได้

ใน Vyper คุณสามารถกำหนดฟังก์ชันโดยใช้คีย์เวิร์ด def ได้ เช่นเดียวกับใน Python ฟังก์ชันยังมีรายการพารามิเตอร์และประเภทการส่งคืนอีกด้วย นี่คือฟังก์ชัน Vyper อย่างง่าย:

Python 
 @external 
 def เพิ่ม (a: int128, b: int128) -> int128: 
 ส่งคืน a + b

มัณฑนากร @externalทำให้ฟังก์ชันนี้สามารถเรียกได้จากภายนอกสัญญา (โดยธุรกรรมหรือสัญญาอื่น) หากไม่มีมัณฑนากรนี้ ฟังก์ชันจะสามารถเรียกใช้ได้ภายในสัญญาที่กำหนดไว้เท่านั้น

ฟังก์ชั่นภายในและภายนอก

ฟังก์ชั่น @internal สามารถเรียกได้ภายในสัญญาเท่านั้น

ฟังก์ชั่น @external สามารถเรียกได้จากนอกสัญญาเท่านั้น

ตัวอย่าง:

Python 
 # @version ^0.3.7 

 # ฟังก์ชั่นภายในสามารถเรียกได้ภายในสัญญานี้เท่านั้น 
 @internal 
 @pure 
 def _add(x: uint256, y: uint256) -> uint256: 
 return x + y 


 @external 
 @view 
 def extFunc() -> bool: 
 return True 


 # ฟังก์ชันภายนอกสามารถเรียกได้จากนอกสัญญานี้เท่านั้น 
 @external 
 @view 
 def avg(x: uint256, y: uint256) -> uint256: 
 # ไม่สามารถเรียกใช้ฟังก์ชันภายนอกอื่น ๆ 
 # self.extFunc()

    # สามารถเรียกใช้ฟังก์ชันภายในได้ 
 z: uint256 = self._add(x, y) 

 คืน (x + y) / 2 


 @internal 
 @pure 
 def _sqr(x: uint256) -> uint256: 
 return x * x 


 @external 
 @view 
 def sumOfSquares(x: uint256, y: uint256) -> uint256: 
 ส่งคืน self._sqr (x) + ตนเอง._sqr(y)

โครงสร้างการควบคุมใน Vyper

โครงสร้างการควบคุมใช้เพื่อดำเนินการต่างๆ ตามการตัดสินใจที่แตกต่างกัน Vyper มีโครงสร้างการควบคุมหลายอย่าง รวมถึง if, for loop และ while loop

คำสั่ง if เป็นโครงสร้างการควบคุมขั้นพื้นฐานที่สุด มันดำเนินการบล็อกของรหัสเฉพาะในกรณีที่เงื่อนไขที่ระบุเป็นจริง

Python 
 @external 
 def is_greater_than_ten(a: int128) -> bool: 
 ถ้า a > 10: 
 คืนค่า True 
 อย่างอื่น: 
 คืนค่า False

for loop ใน Vyper มีไวยากรณ์เหมือนกับใน Python คุณสามารถดำเนินการชุดคำสั่งได้ หนึ่งครั้งสำหรับแต่ละรายการในรายการ ทูเพิล ชุด ฯลฯ

หมายเลข Python 
 : int128[5] = [1, 2, 3, 4, 5] 

 @external 
 def sum_numbers() -> int128: 
 sum: int128 = 0 
 สำหรับ i อยู่ในช่วง (5): 
 sum + = self.numbers[i]
    จำนวนเงินที่ส่งคืน

ใน while ลูปใน Vyper ดำเนินการคำสั่งเป้าหมายซ้ำ ๆ ตราบใดที่เงื่อนไขที่กำหนดเป็นจริง

Python 
 @external 
 def count_to_ten() -> int128: 
 count: int128 = 0 
 ในขณะที่ count < 10: 
 count += 1 
 return count

การจัดการข้อผิดพลาดใน Vyper

ในการเขียนโปรแกรม การจัดการข้อผิดพลาดเป็นสิ่งสำคัญในการจัดการกับข้อผิดพลาดรันไทม์และส่งข้อความแสดงข้อผิดพลาดที่มีความหมายแก่ผู้ใช้ Vyper ใช้คำสั่ง assert เพื่อจัดการกับข้อผิดพลาด

Python 
 @external 
 def หาร (a: ทศนิยม, b: ทศนิยม) -> ทศนิยม: 
 ยืนยัน b != 0, "ไม่สามารถหารด้วยศูนย์" 
 คืน a / b

ในโค้ดข้างต้น ถ้า b เป็นศูนย์ ข้อความแสดงข้อผิดพลาด "ไม่สามารถหารด้วยศูนย์" จะถูกส่งออกไป และธุรกรรมจะถูกเปลี่ยนกลับ มิฉะนั้นจะดำเนินกิจการต่อไป

Vyper ยังมีคำสั่ง revert ซึ่งสามารถใช้เพื่อหยุดการดำเนินการของการเรียกปัจจุบันและการเปลี่ยนแปลงสถานะย้อนกลับ ในขณะเดียวกันก็แสดงข้อความแสดงข้อผิดพลาดด้วย

นั่นเป็นบทสรุปโดยย่อของไวยากรณ์และหลักการพื้นฐานของ Vyper กุญแจสำคัญในการเรียนรู้ Vyper เช่นเดียวกับภาษาการเขียนโปรแกรมอื่นๆ คือการฝึกฝน ฉันสนับสนุนให้ใช้เทคนิคเหล่านี้ในการเขียนแอปพลิเคชันง่ายๆ ในเซสชันต่อไปนี้ เราจะอธิบายวิธีใช้ Vyper เพื่อสร้างและรักษาสัญญาอัจฉริยะ จับตาดู!

ขอแสดงความยินดีที่สำเร็จบทเรียนที่ 2! คุณมีความก้าวหน้าอย่างมากในการเข้าใจไวยากรณ์ของ Vyper และโครงสร้างพื้นฐาน เราได้อธิบายข้อมูลเบื้องต้นเกี่ยวกับไวยากรณ์ของ Vyper ประเภทข้อมูลพื้นฐาน และฟังก์ชัน โครงสร้างการควบคุม และการจัดการข้อผิดพลาดใน Vyper แล้ว โปรดทราบว่าแต่ละองค์ประกอบเหล่านี้เป็นรากฐานของโปรแกรม Vyper จำเป็นอย่างยิ่งที่จะต้องมีความเข้าใจอย่างมั่นคงในองค์ประกอบหลักเหล่านี้ และวิธีที่ดีที่สุดในการทำเช่นนั้นคือการฝึกฝนและสำรวจ สร้างโปรแกรมง่ายๆ ที่รวมสิ่งที่คุณได้เรียนรู้ในวันนี้ ไม่มีทางเลือกอื่นสำหรับประสบการณ์ตรงเมื่อพูดถึงการเขียนโค้ด

เตรียมเจาะลึกสู่โลกของสัญญาอัจฉริยะ Ethereum กับ Vyper ในอนาคต ในบทที่ 3 เราจะดูหลักการ Vyper ที่ซับซ้อนยิ่งขึ้น เราจะใช้แนวทางที่ลงมือปฏิบัติจริงมากขึ้น โดยมุ่งเน้นที่การออกแบบ การนำไปใช้ และการโต้ตอบกับสัญญาอัจฉริยะบนเครือข่าย Ethereum ทำความเข้าใจว่าโลกของเทคโนโลยีบล็อกเชนนั้นกว้างใหญ่และเปลี่ยนแปลงอยู่ตลอดเวลา ในฐานะวิศวกรบล็อคเชน การเดินทางแห่งการค้นพบและการเรียนรู้ของคุณไม่มีวันสิ้นสุดอย่างแท้จริง คุณอยู่บนเส้นทางสู่ความเชี่ยวชาญ และทุกย่างก้าวไม่ว่าจะเล็กแค่ไหน ก็คือก้าวไปข้างหน้า พยายามอย่างเต็มที่ต่อไป แล้วเจอกันในบทที่ 3!

Descargo de responsabilidad
* La inversión en criptomonedas implica riesgos significativos. Proceda con precaución. El curso no pretende ser un asesoramiento de inversión.
* El curso ha sido creado por el autor que se ha unido a Gate Learn. Cualquier opinión compartida por el autor no representa a Gate Learn.
Catálogo
Lección 2

ทำความเข้าใจไวยากรณ์และแนวคิดพื้นฐานของ Vyper

เตรียมเจาะลึกสู่โลกของสัญญาอัจฉริยะ Ethereum กับ Vyper ในอนาคต ในบทที่ 3 เราจะดูหลักการ Vyper ที่ซับซ้อนยิ่งขึ้น เราจะใช้แนวทางที่ลงมือปฏิบัติจริงมากขึ้น โดยมุ่งเน้นที่การออกแบบ การนำไปใช้ และการโต้ตอบกับสัญญาอัจฉริยะบนเครือข่าย Ethereum

รู้เบื้องต้นเกี่ยวกับไวยากรณ์ของ Vyper

คอมพิวเตอร์ก็เหมือนกับผู้คนที่สื่อสารด้วยภาษาที่หลากหลาย Solidity และ Vyper เป็นสองภาษาที่โดดเด่นในขอบเขตบล็อกเชนของ Ethereum เราได้แนะนำ Vyper ซึ่งเป็นภาษาการเขียนโปรแกรมสัญญาอัจฉริยะ Ethereum และเปรียบเทียบกับ Solidity ในบทที่ 1 ในส่วนนี้ เราจะเจาะลึกเข้าไปในไวยากรณ์ของ Vyper ซึ่งคล้ายกับของ Python อย่างมาก เป้าหมายประการหนึ่งของ Vyper คือการทำให้การเขียนโค้ดสัญญาอัจฉริยะง่ายขึ้นโดยยังคงรักษาความปลอดภัยที่ดีเอาไว้ ไวยากรณ์ของมันถูกตั้งใจให้เรียบง่ายและตรงไปตรงมาที่สุดเท่าที่จะเป็นไปได้ คุณจะรู้สึกเหมือนอยู่บ้านอย่างสมบูรณ์แบบหากคุณเป็นผู้เขียนโค้ด Python แม้ว่าคุณจะไม่ใช่ก็ตาม แต่ไวยากรณ์ที่เหมือน Python ของ Vyper นั้นง่ายต่อการเรียนรู้ มาดูส่วนประกอบทางวากยสัมพันธ์หลักของ Vyper กัน

Python 
 # นี่คือความคิดเห็นใน Vyper 
 @external 
 def ทักทาย (ชื่อ: string[10]) -> string[30]: 
 return concat("Hello, ", name, "!")

ประเภทข้อมูลพื้นฐานใน Vyper

ชนิดข้อมูล เป็นส่วนสำคัญของภาษาการเขียนโปรแกรมใดๆ พวกเขากำหนดประเภทของข้อมูลที่สามารถจัดเก็บและจัดการภายในโปรแกรมได้ มาดูประเภทข้อมูลพื้นฐานที่ Vyper นำเสนอกันดีกว่า:

  • บูลีน: นี่คือชนิดข้อมูลไบนารีที่สามารถมีค่าที่เป็นไปได้ค่าใดค่าหนึ่งจากสองค่า จริงหรือเท็จ ตัวอย่าง: flag: bool = True
  • จำนวนเต็ม: Vyper รองรับจำนวนเต็มซึ่งเป็นจำนวนเต็มที่สามารถเป็นได้ทั้งบวก ลบ หรือศูนย์ มีหลายขนาดตั้งแต่ 8 ถึง 256 บิต โดยขนาดที่พบบ่อยที่สุดคือ int128 ตัวอย่าง: count: int128 = 10
  • ทศนิยม: ใช้เพื่อแสดงตัวเลขทศนิยม เช่น ตัวเลขที่มีจุดทศนิยม ตัวอย่าง: price: decimal = 123.45
  • ไบต์และสตริง: ไบต์คือลำดับของข้อมูลไบต์ ในขณะที่สตริงคือลำดับของอักขระ Unicode ตัวอย่าง: name: string[20] = 'Alice'
  • รายการและอาร์เรย์: รายการคือชุดของรายการประเภทข้อมูลเดียวกัน ในทางกลับกัน อาร์เรย์เป็นรายการประเภทพิเศษที่มีความยาวคงที่ ตัวอย่าง: numbers: int128[5] = [1, 2, 3, 4, 5]
    ข้อมูลแต่ละประเภทเหล่านี้มีหน้าที่ในการเขียนสัญญาอัจฉริยะเป็นของตัวเอง คุณจะต้องเลือกประเภทข้อมูลที่เหมาะสมสำหรับข้อมูลแต่ละชิ้นที่คุณต้องการจัดเก็บ โดยขึ้นอยู่กับประเภทการดำเนินการที่คุณต้องการดำเนินการกับข้อมูลนั้น

สรุปค่าบางค่าที่มีอยู่ใน Vyper:

  • บูล
  • int128
  • uint256
  • ทศนิยม
  • ที่อยู่
  • ไบต์ 32
  • ไบต์
  • สตริง
Python 
 # @version ^0.3.7 

 b: public(bool) 
 i: public(int128) # -2 ** 127 ถึง (2 ** 127 - 1) 
 u: public(uint256) # 0 ถึง 2 * * 256 - 1 
 ธันวาคม: สาธารณะ(ทศนิยม) # -2 ** 127 ถึง (2 ** 127 - 1), ทศนิยม 10 ตำแหน่ง 
 addr: สาธารณะ(ที่อยู่) 
 b32: สาธารณะ(bytes32) 
 bs: สาธารณะ(ไบต์ [100]) 
 วินาที: สาธารณะ (สตริง [100]) 


 @ ภายนอก 
 def __init__(): 
 self.b = เท็จ 
 self.i = -1 
 ตัวเอง.u = 123 
 ตัวเอง.dec = 3.14 
 ตัวเอง.addr = 0x704534A22F03Ea46f76A07a195568D115E2e6d52 
 ตัวเอง.b32 = 0xada1b75f8ae9a65dcc16f95678ac203030505c6b465c8206e2 6ae84b525cdacb 
 ตัวเอง.bs = b"\x01" 
 ตัวเอง = "สวัสดีไวเปอร์"

ฟังก์ชั่นใน Vyper

ฟังก์ชั่นใน Vyper ก็เหมือนกับภาษาอื่นๆ มากมาย คือบล็อกของโค้ดที่นำมาใช้ซ้ำได้ซึ่งทำหน้าที่เฉพาะเจาะจง พวกมันให้ความเป็นโมดูลที่ดีกว่าสำหรับแอปพลิเคชันของคุณ และช่วยให้โค้ดสามารถนำกลับมาใช้ใหม่ได้

ใน Vyper คุณสามารถกำหนดฟังก์ชันโดยใช้คีย์เวิร์ด def ได้ เช่นเดียวกับใน Python ฟังก์ชันยังมีรายการพารามิเตอร์และประเภทการส่งคืนอีกด้วย นี่คือฟังก์ชัน Vyper อย่างง่าย:

Python 
 @external 
 def เพิ่ม (a: int128, b: int128) -> int128: 
 ส่งคืน a + b

มัณฑนากร @externalทำให้ฟังก์ชันนี้สามารถเรียกได้จากภายนอกสัญญา (โดยธุรกรรมหรือสัญญาอื่น) หากไม่มีมัณฑนากรนี้ ฟังก์ชันจะสามารถเรียกใช้ได้ภายในสัญญาที่กำหนดไว้เท่านั้น

ฟังก์ชั่นภายในและภายนอก

ฟังก์ชั่น @internal สามารถเรียกได้ภายในสัญญาเท่านั้น

ฟังก์ชั่น @external สามารถเรียกได้จากนอกสัญญาเท่านั้น

ตัวอย่าง:

Python 
 # @version ^0.3.7 

 # ฟังก์ชั่นภายในสามารถเรียกได้ภายในสัญญานี้เท่านั้น 
 @internal 
 @pure 
 def _add(x: uint256, y: uint256) -> uint256: 
 return x + y 


 @external 
 @view 
 def extFunc() -> bool: 
 return True 


 # ฟังก์ชันภายนอกสามารถเรียกได้จากนอกสัญญานี้เท่านั้น 
 @external 
 @view 
 def avg(x: uint256, y: uint256) -> uint256: 
 # ไม่สามารถเรียกใช้ฟังก์ชันภายนอกอื่น ๆ 
 # self.extFunc()

    # สามารถเรียกใช้ฟังก์ชันภายในได้ 
 z: uint256 = self._add(x, y) 

 คืน (x + y) / 2 


 @internal 
 @pure 
 def _sqr(x: uint256) -> uint256: 
 return x * x 


 @external 
 @view 
 def sumOfSquares(x: uint256, y: uint256) -> uint256: 
 ส่งคืน self._sqr (x) + ตนเอง._sqr(y)

โครงสร้างการควบคุมใน Vyper

โครงสร้างการควบคุมใช้เพื่อดำเนินการต่างๆ ตามการตัดสินใจที่แตกต่างกัน Vyper มีโครงสร้างการควบคุมหลายอย่าง รวมถึง if, for loop และ while loop

คำสั่ง if เป็นโครงสร้างการควบคุมขั้นพื้นฐานที่สุด มันดำเนินการบล็อกของรหัสเฉพาะในกรณีที่เงื่อนไขที่ระบุเป็นจริง

Python 
 @external 
 def is_greater_than_ten(a: int128) -> bool: 
 ถ้า a > 10: 
 คืนค่า True 
 อย่างอื่น: 
 คืนค่า False

for loop ใน Vyper มีไวยากรณ์เหมือนกับใน Python คุณสามารถดำเนินการชุดคำสั่งได้ หนึ่งครั้งสำหรับแต่ละรายการในรายการ ทูเพิล ชุด ฯลฯ

หมายเลข Python 
 : int128[5] = [1, 2, 3, 4, 5] 

 @external 
 def sum_numbers() -> int128: 
 sum: int128 = 0 
 สำหรับ i อยู่ในช่วง (5): 
 sum + = self.numbers[i]
    จำนวนเงินที่ส่งคืน

ใน while ลูปใน Vyper ดำเนินการคำสั่งเป้าหมายซ้ำ ๆ ตราบใดที่เงื่อนไขที่กำหนดเป็นจริง

Python 
 @external 
 def count_to_ten() -> int128: 
 count: int128 = 0 
 ในขณะที่ count < 10: 
 count += 1 
 return count

การจัดการข้อผิดพลาดใน Vyper

ในการเขียนโปรแกรม การจัดการข้อผิดพลาดเป็นสิ่งสำคัญในการจัดการกับข้อผิดพลาดรันไทม์และส่งข้อความแสดงข้อผิดพลาดที่มีความหมายแก่ผู้ใช้ Vyper ใช้คำสั่ง assert เพื่อจัดการกับข้อผิดพลาด

Python 
 @external 
 def หาร (a: ทศนิยม, b: ทศนิยม) -> ทศนิยม: 
 ยืนยัน b != 0, "ไม่สามารถหารด้วยศูนย์" 
 คืน a / b

ในโค้ดข้างต้น ถ้า b เป็นศูนย์ ข้อความแสดงข้อผิดพลาด "ไม่สามารถหารด้วยศูนย์" จะถูกส่งออกไป และธุรกรรมจะถูกเปลี่ยนกลับ มิฉะนั้นจะดำเนินกิจการต่อไป

Vyper ยังมีคำสั่ง revert ซึ่งสามารถใช้เพื่อหยุดการดำเนินการของการเรียกปัจจุบันและการเปลี่ยนแปลงสถานะย้อนกลับ ในขณะเดียวกันก็แสดงข้อความแสดงข้อผิดพลาดด้วย

นั่นเป็นบทสรุปโดยย่อของไวยากรณ์และหลักการพื้นฐานของ Vyper กุญแจสำคัญในการเรียนรู้ Vyper เช่นเดียวกับภาษาการเขียนโปรแกรมอื่นๆ คือการฝึกฝน ฉันสนับสนุนให้ใช้เทคนิคเหล่านี้ในการเขียนแอปพลิเคชันง่ายๆ ในเซสชันต่อไปนี้ เราจะอธิบายวิธีใช้ Vyper เพื่อสร้างและรักษาสัญญาอัจฉริยะ จับตาดู!

ขอแสดงความยินดีที่สำเร็จบทเรียนที่ 2! คุณมีความก้าวหน้าอย่างมากในการเข้าใจไวยากรณ์ของ Vyper และโครงสร้างพื้นฐาน เราได้อธิบายข้อมูลเบื้องต้นเกี่ยวกับไวยากรณ์ของ Vyper ประเภทข้อมูลพื้นฐาน และฟังก์ชัน โครงสร้างการควบคุม และการจัดการข้อผิดพลาดใน Vyper แล้ว โปรดทราบว่าแต่ละองค์ประกอบเหล่านี้เป็นรากฐานของโปรแกรม Vyper จำเป็นอย่างยิ่งที่จะต้องมีความเข้าใจอย่างมั่นคงในองค์ประกอบหลักเหล่านี้ และวิธีที่ดีที่สุดในการทำเช่นนั้นคือการฝึกฝนและสำรวจ สร้างโปรแกรมง่ายๆ ที่รวมสิ่งที่คุณได้เรียนรู้ในวันนี้ ไม่มีทางเลือกอื่นสำหรับประสบการณ์ตรงเมื่อพูดถึงการเขียนโค้ด

เตรียมเจาะลึกสู่โลกของสัญญาอัจฉริยะ Ethereum กับ Vyper ในอนาคต ในบทที่ 3 เราจะดูหลักการ Vyper ที่ซับซ้อนยิ่งขึ้น เราจะใช้แนวทางที่ลงมือปฏิบัติจริงมากขึ้น โดยมุ่งเน้นที่การออกแบบ การนำไปใช้ และการโต้ตอบกับสัญญาอัจฉริยะบนเครือข่าย Ethereum ทำความเข้าใจว่าโลกของเทคโนโลยีบล็อกเชนนั้นกว้างใหญ่และเปลี่ยนแปลงอยู่ตลอดเวลา ในฐานะวิศวกรบล็อคเชน การเดินทางแห่งการค้นพบและการเรียนรู้ของคุณไม่มีวันสิ้นสุดอย่างแท้จริง คุณอยู่บนเส้นทางสู่ความเชี่ยวชาญ และทุกย่างก้าวไม่ว่าจะเล็กแค่ไหน ก็คือก้าวไปข้างหน้า พยายามอย่างเต็มที่ต่อไป แล้วเจอกันในบทที่ 3!

Descargo de responsabilidad
* La inversión en criptomonedas implica riesgos significativos. Proceda con precaución. El curso no pretende ser un asesoramiento de inversión.
* El curso ha sido creado por el autor que se ha unido a Gate Learn. Cualquier opinión compartida por el autor no representa a Gate Learn.