Back to glossary

Data Types - References (Vyper Code Example)

Table of Contents

Reference types are data types that are passed by their reference and point to where the actual data is stored.

# pragma version ^0.4.0

struct Person:
    name: String[100]
    age: uint256

# Fixed sized list
nums: public(uint256[10])  # must be bounded
myMap: public(HashMap[address, uint256])
person: public(Person)

@deploy
def __init__():
    # This updates self.nums[0]
    self.nums[0] = 123
    self.nums[9] = 456
    # Copies self.nums to array in memory.
    # Does not modify referenced variable (self.nums)
    arr: uint256[10] = self.nums
    arr[0] = 123

    # This updates self.myMap
    self.myMap[msg.sender] = 1
    self.myMap[msg.sender] = 11

    # This updates self.person
    self.person.age = 11
    self.person.name = "Vyper"
    # Person struct is copied into memory.
    # Does not modify referenced variable (self.person)
    p: Person = self.person
    p.name = "Solidity"

Related Terms

No items found.