Warning in un used variable

heres my code

iex(46)> rt = 10
10
iex(47)> if true do
…(47)> rt = rt * 10
…(47)> end
warning: variable “rt” is unused (there is a variable with the same name in the context, use the pin operator (^) to match on it or prefix this variable with underscore if it is not meant to be used)
iex:48

100
iex(48)> rt = 10
10
iex(49)> if true do
…(49)> ^rt = rt * 10
…(49)> end
** (MatchError) no match of right hand side value: 100
(stdlib 5.1.1) erl_eval.erl:498: :erl_eval.expr/6
iex:50: (file)
iex(49)> rt = 10
10
iex(50)> if true do
…(50)> rt = ^rt * 10
…(50)> end
error: misplaced operator ^rt

The pin operator ^ is supported only inside matches or inside custom macros. Make sure you are inside a match or all necessary macros have been required
iex:51

** (CompileError) cannot compile code (errors have been logged)

iex(50)> ^rt = 10
10
iex(51)> if true do
…(51)> ^rt = rt * 10
…(51)> end
** (MatchError) no match of right hand side value: 100
(stdlib 5.1.1) erl_eval.erl:498: :erl_eval.expr/6
iex:52: (file)
iex(51)> ^rt = 10
10
iex(52)> if true do
…(52)> ^rt = ^rt * 10
…(52)> end
error: misplaced operator ^rt

The pin operator ^ is supported only inside matches or inside custom macros. Make sure you are inside a match or all necessary macros have been required
iex:53

** (CompileError) cannot compile code (errors have been logged)

iex(52)> ^rt = 10
10
iex(53)> if true do
…(53)> rt = rt * 10
…(53)> end
warning: variable “rt” is unused (there is a variable with the same name in the context, use the pin operator (^) to match on it or prefix this variable with underscore if it is not meant to be used)
iex:54

100
iex(54)>

there are warning when make variable that exist, does it ok show warning that? i am using elixir 1.15.7

I think what you are trying to do is this:

iex> rt = 10
10

iex> rt = if true do
...>  rt * 10
...> end
100

Take a look at case, cond, and if — Elixir v1.16.0-rc.0 > “This is also a good opportunity to talk about variable scoping in Elixir.”

5 Likes