2017-01-13 3 views
0

テーブルに置かれたデータは、選手の名前と自分の年齢であるETSからの値の抽出:)のルックアップを( - アーラン

ets:new(players, [set,named_table]) 

以下のように私は、フォーマットされたETSのテーブルを持っています。

それは私が選手の年齢と年齢のみを取得しようとする機能を作った[{名前、年齢}]

の形式です。

getPlayerAge(PlayerName)-> 
    Player = ets:lookup(players,PlayerName), 
    [{_,Age}] = Player, 
    Age. 

私は悪いマッチのエラーを受け取りました。正直なところ私は地獄として混乱しています。

これはできますか?

答えて

1

おそらく正確なエラーはこの1つである:

{badmatch, []} 

つまり、あなたがets:lookupから得た値は、空のリスト[]であり、それはパターン[{_,Age}]と一致していません。 ets:lookupは、指定されたキーを持つ要素が見つからない場合は空のリストを返します。 ets:tab2list(players)を呼び出して戻り値を調べることで、テーブルに実際に含まれることが期待されるものが含まれているかどうかを確認できます。

+0

そうですね、戻り値は[{{player、age}}]です。 – Fendec

+0

@ Deckster711ああ、テーブル要素は余分なタプルでラップされています。あなたの 'ets:insert'はどのように見えますか? – legoscia

関連する問題