私の関数が頭の中でパターンマッチングを直接行うことを考えれば、関数がそれを呼び出すことなく与えられた入力に対してパターンが一致するかどうかをチェックする方法はありますか?キンダーのようなmatch?
が機能します。私はwhen
を気にせず、タプル内の原子や原子とのみ一致しています。ファンクションヘッドに一致するパターンがあるかどうかを確認しますか?
def init(:ok) do
...
end
と
check(&init/1, :ok) # return true
check(&init/1, :other) # return false
私は、GenServerの状態を変更する入力のいくつかを扱う関数のリストを使用して、他の人を無視しています。各関数はタプルをとり、ある状態を取り、関数の頭が一致すると変更された状態を返し、そうでない場合は状態を返します。私は今この試みのためにtry/rescueラッパー関数を持っていますが、それはあまり美味しくありません。入力は可変長タプルであり、第1の要素は原子識別子である。
これで何を達成しようとしていますか?もう少し文脈があれば、私たちはあなたの問題をより簡単に解決するかもしれません。 –
@PatrickOscityが更新されました。それがまだ不明な場合はお気軽にお問い合わせください。 –
@FilipHaglund関数を実行せずに関数の頭が一致するかどうかを確認することはできませんが、既存のツールで同じ目標を達成するにはいくつかの方法があると思います。もっとコードを表示できますか?私はあなたがしようとしていることを得るのに苦労している:| – whatyouhide