Tipos paramétricos en Julia
La T entre llaves se elige por uso y se acota con <:.
# The T in curly braces is decided per use; constraints bound it.
struct Reading{T<:Real}
label::String
value::T
end
seeing = Reading("seeing", 2.3)
frames = Reading("frames", 48)
println(typeof(seeing))
println(typeof(frames))
# Parametric functions dispatch on the element type.
midpoint(xs::Vector{T}) where {T<:Real} = (first(xs) + last(xs)) / 2
println(midpoint([10.0, 14.0, 22.0]))
println(midpoint([3, 9]))
Cómo funciona
Reading{T<:Real}estampa un tipo concreto por valor.typeofmuestraReading{Float64}yReading{Int64}.where {T<:Real}escribe la misma idea sobre una función.
Palabras clave y builtins usados aquí
ReadingRealStringTVectorendstructwhere
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 415
- Tokens
- 103
- Ritmo de tres estrellas
- 60 tpm
Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 103 segundos.
Paso 3 de 3 en Tipos; paso 18 de 27 en Fundamentos del lenguaje.