2014-10-12 1 views
1

나는 얼랑 개발을 처음했다. 나는 '사용자'테이블에 저장된 mnesia 테이블에서 AccessToken 값을 읽으려고합니다. 내 코드에서얼랭 체크 빈 문자열

나는 짓을했는지 :

BUser = boss_db:find(users, [{email, 'equals', MyEmail}]), 
[{_,_,BEmail,BName,BPassword,_,BAccessToken}] = BUser, 
io:format("User Details ~n~p~n", [BUser]), 
io:format("Access Token ~n~p~n", [BAccessToken]), 
. 
. 

내가 얻을 :

User Details 
[{users,"users-1","[email protected]","Some Name","somepassword",'',''}] 

마지막 필드가 AccessToken이며이 같이 인쇄됩니다 :

Access Token 
'' 

하면 AccessToken 값 비어 있지 않습니다. 일부 작업을 수행 할 것입니다.

AccessToken이 비어 있는지 확인하려면 어떻게합니까?

AccessTokenLength = length(BAccessToken) 
if AccessTokenLength > 0 -> 
. 
. 

그러나 나는 다음과 같은 오류 얻을 :

나는 시도 나 또한 노력

Error in controller error badarg [{erlang,length,[''],[]} 

:

case binary_to_list(BAccessToken) =/= [] of 
true-> 
false-> 

을하지만 다음과 같은 오류 얻을 :

Error in controller error badarg [{erlang,binary_to_list,[''],[]} 

빈 상태를 올바르게 확인하려면 어떻게해야합니까?

답변

2

당신은 값

case BAccessToken of 
    '' -> 
     %% empty 
    _ -> 
     %% not empty 
end 

그리고 한 가지 더에 불과 패턴 일치 할 수 있었다. Erlang의 작은 따옴표는 원자를 나타냅니다. 일반적으로 atom 또는 false 또는 not_empty과 같은 애인 애송이 시작 문자로 작성할 수 있습니다. 그러나 때로는 'This is also atom'과 같이 작은 따옴표를 사용할 수있는 더 복잡한 "원자"를 사용하고 싶습니다. 그리고 ''가.

그냥 "빈 원자와 빈 바이너리는 다음과 같이 MPM <<>>.

+0

감사를 보일 것이다 ... 완벽했다! – raich