Saltar al contenido

¿Cómo nombrar una variable con el valor de otra variable?

Este post ha sido analizado por nuestros especialistas para que tengas la garantía de la veracidad de esta reseña.

Solución:

Asumiré que desea una sintaxis compacta para que sea práctico de usar.
elegiré csrepresentando el símbolo compuesto:

cs[x__] :=
  ToHeldExpression @ ToString @ Row @ x /.
    _[s_Symbol] :> s, _ :> $Failed

func_[a___, Unevaluated @ cs[x__], b___] ^:= 
  ToHeldExpression @ ToString @ Row @ x /.
    _[s_Symbol] :> func[a, s, b], _ :> $Failed

Prueba:

i = 10;
cs["d", i] = 30;

d10
30

Se puede usar cualquier expresión siempre que sus formas evaluadas se concatenen a un nombre de símbolo válido:

cs[Pi, d10, "x"] = 86;

Pi30x
86

La reasignación es posible:

cs[Pi, d10, "x"] = 99;

Pi30x
99

Si la concatenación produce un nombre de símbolo no válido $Failed es regresado:

cs[5, "x"] = 30
$Failed

(Los nombres de los símbolos no pueden comenzar con números).


Lectura recomendada:

  • Asignación de valores a una lista de nombres de variables

  • Manipulación elegante de la lista de variables.

  • ¿Cómo ‘combinar’ una lista como FromDigits, pero con una mezcla de números y símbolos?

  • ¿Cómo carga programáticamente datos en símbolos? (especialmente la respuesta de Kuba)

A pesar de la excelente respuesta aceptada por Mr.Wizard, creo que vale la pena señalar que el enfoque idiomático estándar del problema en Matemática es usar variables indexadas:

In[1]:= i = 10;
d[i] = 30;
Definition[d]
d[10] = 10;
Definition[d]
Out[3]= d[10] = 30

Out[5]= d[10] = 10

Tienes la posibilidad mostrar esta división si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *