Estoy familiarizado con el operador Ruby y su flujo de trabajo y casos de uso, pero en un lugar con el que estoy confundido. en expresión.
3.**2+1
da resultado 27
en cambio 3.**2
da 9
y
3**2+1
da 10
está bien pero estoy confundido con 3.**2+1
cualquier cosa que me falta con punto. operador aquí.
¡Gracias por adelantado!
Los operadores en Ruby están respaldados por métodos. Entonces, 3 ** 2
es funcionalmente equivalente a "llamar al método **
en 3
y pasar 2
como argumento".
También puede invocar estos métodos directamente ( 1.+(2)
en lugar de 1+2
), que es lo que hace ese punto en este caso. Y debido a que los operadores tienen diferente precedencia que las llamadas a métodos, está viendo estos resultados diferentes.
3.** 2 + 1 == 3.**(2+1) # but 3 ** 2 + 1 == (3 ** 2) + 1