1

erlangで0に等しいビット文字列をどのようにパターンマッチングしますか?言い換えれば、フォームのパターン:

<<0:17>>
<<0:1>>
<<0:N>>

これは関数を定義するためのものです。

ありがとう

4

2 に答える 2

4

これが回避策です。お役に立てば幸いです。

-module(lab).
-compile(export_all).

is_zero_bitstring(BitString) ->
    Size = erlang:bit_size(BitString),
    <<0:Size>> =:= BitString.

Erlangシェル内から実行します。

1> c(lab).
{ok,lab}
2> lab:is_zero_bitstring(<<0:17>>).
true
3> lab:is_zero_bitstring(<<0:1>>). 
true
4> lab:is_zero_bitstring(<<0:123456>>).  
true
5> lab:is_zero_bitstring(<<7>>).   
false
于 2012-06-10T02:34:44.477 に答える
0

これがあなたが望むものである可能性はありますか?

1> A = <<0:17>>.
<<0,0,0:1>>
2> B = <<0:1>>.
<<0:1>>
3>  C = <<0:3>>.
<<0:3>>
4> F = fun(<<0:17, 0:1, Rest/bitstring>>) -> ok end.
#Fun<erl_eval.6.82930912>
5> F(<<A/bitstring, B/bitstring, C/bitstring>>).
ok
6> F(<<A/bitstring, B/bitstring, C/bitstring, 0:5>>).
ok
7>

楽しみは、0の17ビット、0の1ビット、および0の次の(Nの長さ)に一致します。#5では、0の3つの追加ビットでテストされ、#6ではさらに5つの追加ビット(8つのゼロビット合計)

于 2012-06-10T21:54:53.193 に答える