es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

“Error de sintaxis antes de: ‘/'” al hacer el comando make en Erlang.

Cuando realizo make con mi proyecto de Erlang, aparecen algunos errores como: memcached.erl:44:10: error de sintaxis antes de: ‘/’

Código fuente:

-module(Memcached).
%% API Externo
-export([set/3, set/5]).
-export([add/3, add/5]).
-export([replace/3, replace/5]).
-export([get/2]).
-export([delete/3, delete/2]).
-export([stats/1]).
%%====================================================================
%% Tipos
%%====================================================================
%% @type hostport() = {host, string(), port, integer()}. Tupla que describe un host y un puerto al que conectarse
%% @type socket() = {socket, port()}. Tupla que describe un socket existente
%% @type memcached_connection() = hostport() | socket().
%% @type memcached_key() = list() | atom().
-type(hostport() :: {host, string(), port, integer()}).
-type(socket() :: {socket, port()}).
-type(memcached_connection() :: hostport() | socket()).
-type(memcached_key() :: list() | atom()).
%%====================================================================
%% API Externo
%%====================================================================
%% @doc Asocia Bytes con Key.
%% @spec set(memcached_connection(), Key::memcached_key(), Bytes::any()) ->
%% ok | {error, not_stored}
-spec(set/3::(memcached_connection(), memcached_key(), any()) ->
ok | {error, not_stored}).
set({host, Host, port, Port}, Key, Bytes) ->
set({host, Host, port, Port}, Key, 0, 0, Bytes);
set({socket, Socket}, Key, Bytes) ->
set({socket, Socket}, Key, 0, 0, Bytes).

El error está ubicado en -spec(set/3::(memcached_connection(), memcached_key(), any())

He revisado muchos documentos tratando de resolverlo, pero el error sigue ahí. ¿Hay algún error de escritura o mal uso de la sintaxis de Erlang?

Mi información de entorno de Erlang:

Erlang/OTP 24 [erts-12.1.5] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1]

Eshell V12.1.5  (abort with ^G)
1> 
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error de sintaxis antes de la barra en la línea 44 es causado por el uso del código de entidad HTML para “/”. En Erlang, el símbolo correcto para una barra inclinada hacia adelante es simplemente “/”.

    Para solucionar esto, reemplace “>” con “>” y “->” con “->”. La definición de la función corregida debería lucir así:

    -spec set/3(memcached_connection(), memcached_key(), any()) -> ok | {error, not_stored}.
    set({host, Host, port, Port}, Key, Bytes) ->
        set({host, Host, port, Port}, Key, 0, 0, Bytes);
    set({socket, Socket}, Key, Bytes) ->
        set({socket, Socket}, Key, 0, 0, Bytes).
    

    Además, al definir la especificación de la función con la directiva “-spec”, no es necesario usar “->” o “->>”. La especificación simplemente debe enumerar el nombre de la función y los tipos de argumentos.

    Espero que esto ayude a resolver el error de sintaxis que estás enfrentando.

Comments are closed.