Soy muy nuevo en Ruby y en programación y estoy tratando de escribir esta función simple a continuación.
def sum_square(x=0, y, z=0) px**2 + y**2 + z**2 end sum_square(2,3)y obtengo este error de sintaxis de error, inesperado '=', esperando ')'
Pensé que podría usar un argumento opcional aquí
Los parámetros con valores predeterminados deben colocarse después de los parámetros sin valores predeterminados o, como dijo Tom Lord en los comentarios, pueden "colocarse en cualquier otro lugar de la lista, siempre que estén todos definidos juntos". Entonces, si desea mantener y obligatorio, debería ser algo como
def sum_square(y, x=0, z=0) px**2 + y**2 + z**2 endPero puede ser confuso durante las llamadas, por lo que puede cambiar a parámetros con nombre:
def sum_square=(y, x:0, z:0) px**2 + y**2 + z**2 end # all these call are valid sum_square(1) sum_square(1, x:2) sum_square(1, z:2) sum_square(1, x:2, z:3) Hay más formas posibles de implementar esta función enumeradas en los comentarios con un enfoque más general (para cualquier número de entradas usando * ) o con todos los parámetros siendo nombrados.