2016-07-21 5 views
3

は、私は時々、この関数のシグネチャを見て、その上に何かを見つけることができません。エリクシール関数シグニチャの "<>"演算子は何ですか?

def handle("user:" <> id), do: Repo.get(User, id) 

私はアーラン/万能薬に新しいですので、私はこれがuser:1user:2ためにパターンマッチングのいくつかの並べ替えであると仮定し、私の避難所」エリクシールガイドでこれに関する記事や情報を見たことがありません。

ここでは正確に何が起こっていますか?

答えて

12

はい、この場合のパターンです。 "user:" <> idは、user:で始まる任意のバイナリと一致し、user:の後の文字列の一部をidに割り当てます。

iex(1)> "user:" <> id = "user:" 
"user:" 
iex(2)> id 
"" 
iex(3)> "user:" <> id = "user:123" 
"user:123" 
iex(4)> id 
"123" 
iex(5)> "user:" <> id = "user" 
** (MatchError) no match of right hand side value: "user" 

同じオペレータが表現として使用される場合バイナリを連結するためにも使用されることに注意してください。

iex(1)> id = "123" 
"123" 
iex(2)> "user:" <> id 
"user:123" 
関連する問題