извлеките последовательность sub

Я развиваю эту функцию в erlang:

get_user_cin_by_token(Token) ->
    Q = qlc:q([{X#person.idcard} || X <- mnesia:table(person),
                X#person.token =:= Token]),
    case do(Q) of
        [H] ->
            {ok, H};
        [] ->
            {error, notfound}
    end.

это - пример результата, когда я выполняю эту функцию:

{ok,{"07049200"}}

моя цель к disply всего "07049200" без {}

Я проверяю с этой функцией:

test3()->

    case get_user_cin_by_token("93090612") of
        {ok, H}-> G=string:substr(H, 2, length(H)-1),
         io:format("~s~n",[G]);
        {error, notfound}->io:format("error")
end.

но эта ошибка - displyed:

** exception error: bad argument
     in function  length/1
        called as length({"07049200"})
1
добавлено
Просмотры: 1
Вместо того, чтобы иметь {X#person.idcard} в вашем вопросе QLC, пытаются использовать X#person.idcard так это doesn' t обернут в кортеж единственного элемента.
добавлено автор I GIVE CRAP ANSWERS, источник
Это - определенно самое легкое решение проблемы. Это совершенно не нужное обертывание.
добавлено автор rvirding, источник

2 ответы

{"07049200"} is not a string; it's a tuple. Hence, you can "unpack" it by pattern matching: {H} = {"07049200"} will result in H=07049200.

В вашем оригинальном коде можно сделать:

get_user_cin_by_token(Token) ->
    Q = qlc:q([{X#person.idcard} || X <- mnesia:table(person),
                X#person.token =:= Token]),
    case do(Q) of
        [{H}] ->
            {ok, H};
        [] ->
            {error, notfound}
    end.
3
добавлено
Необходимо изменить ваш io:format/ 2 линия тогда
добавлено автор I GIVE CRAP ANSWERS, источник
Я использую ваш код, и я проверяю с этим кодом: это displys: 07049200, но мне нравится к disply: "07049200"
добавлено автор franco mocci, источник
как преобразовать кортеж, чтобы натянуть
добавлено автор franco mocci, источник

Попробуйте это:

test3()->

    case get_user_cin_by_token("93090612") of
        {ok, {H}}-> io:format("\"~s\"~n",[H]);
        {error, notfound}->io:format("error")
end.
0
добавлено