How do I reassign a variable in a contract? This is something similar to what I want to achieve
let x: int = 0
if(y < 100)
x = 1
else
x = 2
How do I reassign a variable in a contract? This is something similar to what I want to achieve
let x: int = 0
if(y < 100)
x = 1
else
x = 2
contract C =
entrypoint f(y: int) : int=
let x = 0
if(y < 100)
let x = 1
x
else
let x = 2
x
is a valid contract, but the code doesn’t make much sense… It is better written:
contract C =
entrypoint f(y: int) : int=
if(y < 100)
1
else
2
Do you have a more realistic case perhaps? Reassigning a variable isn’t very interesting in itself!
Thanks for that,
I’m getting this error when reassigning,
parse_error: Unexpected token '='.
Also, to give you a more realistic feel of the use-case, I need to use the variable x
for computing a new variable, say z
which will eventually be returned. So basically, this is what the code will kind of look like:
contract C =
entrypoint f(y: int) : int=
let x: int = 0
if(y < 100)
x = 1
else
x = 2
let z: int = x + 120 // an arithmetic compuation with x, y and some state variables
z
Also, I tried this -
contract C =
entrypoint f(y: int) : int=
let x: int = 0
if(y < 100)
let x = 1
else
let x = 2
let z: int = x + 120 // an arithmetic compuation with x, y and some state variables
z
Then I’m not getting the parse_error
as above but getting this -
type_error: Let binding must be followed by an expression
Yes, just like the compiler suggests, let x = 1
is not an expression, it is just a binding…
let x = 1
x
is an expression (though a silly one).
In this case I’d suggest:
let x: int = if(y < 100) 1 else 2
x * y + z
Thanks for that, it works!