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
where (temps > 70.0)asigna solo donde la máscara se cumple.elsewheremaneja el resto, yend wherecierra la construcción.merge(70.0, temps, mask)es la forma de expresión: si-verdadero, si-falso, máscara.
Palabras clave y builtins usados aquí
endimplicitmergenoneprintprogramrealwhere
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.
Paso 2 de 3 en Arreglos completos; paso 11 de 27 en Fundamentos del lenguaje.