Var initialization
- 主要語言
- Python
- 星號
- 288
- 分支
- 138
- PR 合併指標
- 30 天內沒有已合併 PR
描述
## Problem
Initializing the scratch var seems weird
```py
program = Seq(
(x := ScratchVar()).store(Int(1)),
x.load()
)
```
what if?
```py
program = Seq(
v := Var(Int(1)),
v.load()
)
```
## Solution
not even PR'ing this, its maybe even weirder
```py
from pyteal import *
class Var(Expr):
def __init__(self, val: Expr):
self.val = val
self.slot = ScratchSlot()
self.type = val.type_of()
self.has_stored = False
def __str__(self):
if self.has_stored:
return self.slot.load(self.type).__str__()
else:
return self.slot.store(self.val).__str__()
def __teal__(self, options: CompileOptions):
if not self.has_stored:
self.has_stored = True
return self.slot.store(self.val).__teal__(options)
def load(self):
return self.slot.load(self.type)
def store(self, val: Expr):
self.val = val
return self.slot.store(val)
def has_return(self):
return False
def type_of(self):
if self.has_stored:
return self.val.type_of()
else:
return TealType.none
opts = CompileOptions(mode=Mode.Application, version=6)
program = Seq(v := Var(Int(1)), v.store(Int(2)), v.load())
print(compileTeal(program, mode=Mode.Application, version=6))
```
貢獻指南
評估
這個 Issue 還沒有評估資料。