typestar

where y merge en Fortran

Asignación condicional sobre arreglos completos: where elige elementos, merge elige valores.

program where_masks
    implicit none
    real :: temps(7) = [61.0, 68.0, 74.0, 79.0, 72.0, 65.0, 58.0]
    real :: adjusted(7)

    ! where assigns only where the mask holds; elsewhere covers the rest.
    where (temps > 70.0)
        adjusted = temps - 2.0
    elsewhere
        adjusted = temps
    end where

    print *, "adjusted: ", adjusted
    ! merge is the one-line version: value-if-true, value-if-false, mask.
    print *, "capped:   ", merge(70.0, temps, temps > 70.0)
end program where_masks

Cómo funciona

  1. where (temps > 70.0) asigna solo donde la máscara se cumple.
  2. elsewhere maneja el resto, y end where cierra la construcción.
  3. merge(70.0, temps, mask) es la forma de expresión: si-verdadero, si-falso, máscara.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
450
Tokens
75
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 69 segundos.

Escribe este fragmento

Paso 2 de 3 en Arreglos completos; paso 11 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →