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