#概要
変数の頭文字の記号の意味のまとめ
しばらく触れないでいると忘れてしまいがちなので。
@(アットマーク)
定数
例:
@url "https://hogehoge.com/aiueo/sample.xml"
@user_agent [ {"User-agent", "Elixir foo.boo.001@gmail.com"} ]
def getBody do
response =
@url |> HTTPoison.get!(@user_agent)
response.body
end
また、アノテーションとしても利用されている
@moduledoc
・・・ モジュールのドキュメント
@doc
・・・ 関数やマクロのドキュメント
例)
defmodule MyApp.Blog do
@moduledoc """
The Blog context.
"""
<<省略>>
@doc """
Returns the list of posts.
## Examples
iex> list_posts()
[%Post{}, ...]
"""
def list_posts do
Repo.all(Post)
end
<<省略>>
^(キャレット)
ピン演算子。束縛済みの変数を新たに束縛させたくない場合に使用する。
パターンマッチのみで、上書きされない。
例 (^無):
iex(1)> x = 123
123
iex(2)> x = 321
321
例 (^有):
iex(1)> x = 123
123
iex(2)> ^x = 321
** (MatchError) no match of right hand side value: 321
iex(2)> ^x = 123
123
_(アンダーバー)
使われない変数の頭につける。これを付けないとwarningが出る。
例)
def index(conn, _params) do
posts = Blog.list_posts()
render(conn, "index.html", posts: posts)
end
↑を変更し、アンダーバーを消してみると
例)
def index(conn, params) do
posts = Blog.list_posts()
render(conn, "index.html", posts: posts)
end
warningが発生する
warning: variable "params" is unused (if the variable is not meant to be used, prefix it with an underscore)
lib/my_app_web/controllers/post_controller.ex:7: MyAppWeb.PostController.index/2
以上