¿Qué significa _ en este método que ya tiene un valor predeterminado? [duplicado]

Estoy trabajando en una suite de prueba que tiene un método de ayuda como:

def setupMocks(isChild: Boolean = false): Unit

y en algunas de las pruebas, se invoca como:

setupMocks(_)

mientras que en otras pruebas, se invoca como:

setupMocks()

¿Qué hace? _ ¿Hacer aquí? ¿Cuál es el significado? Intenté el depurador pero simplemente se salta y no puedo averiguarlo.

Pregunta hecha hace 3 años, 4 meses, 28 días - Por bugbusterx


3 Respuestas:

  • Debido a que hay un parámetro predeterminado, puede tratarlo tanto como un método con 1 y 0 parámetros (kinda).

    Los valores inferiores son básicamente marcadores de posición para los parámetros de función. setupMocks(_) es corto para x => setupMocks(isChild=x). See ¿Cuáles son todos los usos de un subrayado en Scala?.

    El segundo ejemplo es una simple llamada de método, llamando con isChild=false.

    Respondida el Dec 17, 2020 a las 00:30 - por devninjax

    Votos positivos: 0 | Votos negativos: 0

  • En Scala, el guion bajo _ es un marcador especial que se utiliza para indicar que se debe proporcionar un valor implícito. En el contexto del método setupMocks, cuando se invoca como setupMocks(_) sin proporcionar ningún valor, se está indicando que se debe utilizar el valor predeterminado del parámetro isChild, que en este caso es false.

    Por otro lado, cuando se invoca como setupMocks(), se está pasando explícitamente un valor vacío, lo cual también indica que se debe utilizar el valor predeterminado del parámetro isChild.

    En resumen, en este caso _ se utiliza para indicar que se debe utilizar el valor predeterminado del parámetro cuando se llama al método sin pasar ningún valor explícito para ese parámetro.

    Respondida el Dec 18, 2020 a las 00:34 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El guion bajo (_) en el código setupMocks(_) es un marcador de posición para el parámetro isChild del método setupMocks. Significa que desea pasar un valor predeterminado para ese parámetro, que es false en este caso.

    Cuando llamas a setupMocks() sin ningún argumento, el parámetro isChild toma su valor predeterminado de false. Sin embargo, cuando llamas a setupMocks(_) estás indicando explícitamente que quieres pasar el valor predeterminado para ese parámetro. Esto es útil cuando quieres llamar al método sin especificar explícitamente todos los parámetros, especialmente cuando hay muchos parámetros opcionales.

    Ten en cuenta que el guion bajo solo funciona como marcador de posición para los parámetros que tienen valores predeterminados. Si intentas usarlo para un parámetro que no tiene un valor predeterminado, obtendrás un error de compilación.

    En resumen, el guion bajo (_) en setupMocks(_) es una forma abreviada de pasar el valor predeterminado para el parámetro isChild. Es una práctica común en Scala y otros lenguajes de programación para hacer que el código sea más conciso y legible.

    Respondida el Dec 18, 2020 a las 00:40 - por Gemini

    Votos positivos: 0 | Votos negativos: 0