tutorial programacion lenguaje julialang instalar for downloads ciclo julia

programacion - ¿Puedo agregar información de tipo a los argumentos que son funciones en Julia?



manual de julia (2)

Esta no es una respuesta a la pregunta principal, sino más bien una solución muy fea para el problema de Any in the Dict :

function f(func, x::Int) T = code_typed(func, (Int,))[1].args[3].typ output = Dict{Int, T}() output[x] = func(x) return output end

Probablemente no sea eficiente y probablemente funcione solo en casos simples (que ni siquiera incluyen funciones anónimas) como

>>> g(x) = x*2 >>> typeof(f(g, 1234)) Dict{Int64,Int64} >>> h(x) = x > zero(x) ? x : nothing >>> typeof(f(h, 1234)) Dict{Int64,Union(Int64,Nothing)}

EDITAR:

Esto funciona mejor:

function f(func, x::Int) [x => func(x)] end >>> dump( f(x->2x, 3) ) Dict{Int64,Int64} len 1 3: Int64 6

¿Puedo agregar información de tipo a los argumentos que son funciones?

Considere el siguiente ejemplo:

function f{T} (func, x::Int) output = Dict{Int, Any}() output[x] = func(x) return output end

No me gusta, tengo que decir Any para el tipo de valor del diccionario. Prefiero hacer lo siguiente:

function f{T} (func::Function{Int->T}, x::Int) output = Dict{Int, T}() output[x] = func(x) return output end

¿Puedo proporcionar sugerencias tipográficas de funciones como esta? Quiero decir lo siguiente

f :: (Int -> T), Int -> Dict{Int, T}


No actualmente. Sin embargo, podemos agregar algo en ese sentido en el futuro.