• Empleos
  • Sobre nosotros
  • Empleos
    • Inicio
    • Empleos
    • Cursos y retos
  • Empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

196
Vistas
Defina una función de fábrica que acepte un conjunto de operadores como entradas

He estado trabajando en una aplicación de calculadora simple usando javascript del lado del cliente y he implementado la lógica del programa para las operaciones matemáticas básicas +, -, x, / . El código se implementa como funciones de devolución de llamada para que puedan usarse en controladores de eventos.

 add = (a , b) => a + b subtract = (a , b) => a - b multiply = (a, b) => a * b divide = (a, b) => a / b

He leído que las funciones de fábrica son útiles en situaciones como esta donde la estructura de cada función es similar. Sin embargo, no estoy seguro de cómo puede crear funciones de fábrica, el conjunto que se asignará son operadores. Algo como, createOperation("add") devolvería (a , b) => a + b , createOperation("subtract") devolvería (a, b) => a - b etc.

Mi primer pensamiento fue convertir todo en una cadena, concatenarlos y luego regresar usando eval. Algo así como eval("(example) => example.output") . Por lo que he leído en los documentos de MDN y en otros lugares, esto es muy desaconsejable.

¿Hay alguna manera de lograr esto sin recurrir al truco de eval ?

over 3 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

function createOperation(operator, { a, b }) { switch (operator) { case "add": return a + b; case "substract": return a - b; // .... implement for mul and div operator default: throw new Error("please provide correct operator"); } } const result = createOperation("substract", { a: 3, b: 5 }); console.log(result);
over 3 years ago · Juan Pablo Isaza Denunciar

0

El uso de mapeo y una función de fábrica puede verse así. También puede usar una enum para contener nombres de acción :)

 const mapping = { mul: (a, b) => a * b, add: (a, b) => a + b }; const factory = (action) => { if (mapping.hasOwnProperty(action)) { return mapping[action]; } throw new Error("Action does not exist"); }; const add = factory("add"); console.log(add(1, 2));

En este ejemplo, tenemos una variable de mapping , que asigna la tecla de acción a la función respectiva. La función de factory recupera cada acción de esta variable de mapping y la devuelve. No se encontró ninguna clave; por lo general, no se debe permitir, por lo que se genera un Error .

Puede usar Map , en lugar de un objeto, especialmente útil si las claves no pueden ser de tipo cadena.

over 3 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda