私はこのケースステートメントに 'variable constant1 is unused'というエラーを出しています。変数を無視してトップラインを返すように見えるので、変数は明らかにスコープを持っていません。定数を1に置き換えると、それは機能します。エリクサーでこれをする最善の方法は何ですか?エリクサー:caseステートメントでの変数の使用
warning: variable constant1 is unused
Untitled 9:15
{1, 2, 3, 4}
も動作しない変数に定数を変更する:ここで
defmodule Main
do
def constant1, do: 1
def constant2, do: 1
def constant3, do: 1
x = 1
y = 0
z = 0
{a, b, c, d} =
case {x, y, z} do
{constant1, constant2, constant3} -> {1, 2, 3, 4}
{constant1, constant2, _} -> {5, 6, 7, 8}
{constant1, _, _} -> {9, 10, 11, 12}
{_, _, _} -> {13, 14, 15, 16}
end
IO.inspect {a, b, c, d}
end
が出力されます。
ご回答いただきありがとうございます。変数の代わりにグローバル定数を使用するにはどうすればよいですか?私は@ constant1構文を使ってみましたが、単項演算子の引数が無効です^、既存の変数が必要です:^ @ constant1 – iphaaw
できません。 https://github.com/elixir-lang/elixir/issues/2963基本的には、エリクシルモジュールの属性はコンパイル時にのみ利用可能であり、(Erlangとは異なり)モジュール内には格納されないからです。 – mudasobwa
代わりにグローバル変数を使用できますか? – iphaaw