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.

Generar un UUIDv4 aleatorio con Elm

Estoy intentando generar UUID aleatorios v4 dentro de un bucle:

    randomUuid =
         -- TODO: encontrar una forma de generar un UUID aleatorio para variableId

updatedVariables =              
     group.variables |> List.map (\variable -> { variable | id = randomUuid })

He leído la documentación de elm/random y elm/uuid pero no logro encontrar cómo generar un UUID sin usar una semilla.

Lo único que puedo hacer es:

newUuid : Random.Seed -> ( String, Random.Seed )
newUuid seed =
    seed
        |> Random.step UUID.generator
        |> Tuple.mapFirst UUID.toString

Veo que elm/random tiene una función “independentSeed” pero no puedo hacer que genere una semilla.

El equivalente en node de lo que estoy intentando lograr con randomUuid es:

const { uuid } = require('uuidv4');

const randomUuid = uuid();

Siento que puedo estar perdiendo algún concepto importante de Elm aquí, pero no puedo entenderlo por mi cuenta. Cualquier ayuda o dirección sería muy apreciada.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puede usar la función Random.generate para generar un UUID aleatorio. La función Random.generate toma un generador y una semilla y devuelve una tupla con el valor generado y la nueva semilla. La función UUID.generator del paquete elm/uuid se puede utilizar como generador.

    Puede usar la función Random.initialSeed para generar una semilla. Esta función toma dos números enteros y devuelve una semilla.

    Aquí tiene un ejemplo de cómo puede utilizar Random.generate y Random.initialSeed para generar un UUID aleatorio:

    randomUuid : String
    randomUuid =
        Random.initialSeed 123 456
            |> Random.generate UUID.generator
            |> Tuple.first
            |> UUID.toString
    

Comments are closed.