求前辈指导下面的代码是什么脚本语言,文件后缀为.jl
import LegacyFeatures.f_radial_goal_grid
# import Base.Test.@test
import Base.length
export ParameterizedFeatureBlock, ParameterizedFeatureFunction
export evaluate
export FeatureBlock
export GOAL_GRID, INTRUDER_GRID, FEATURES
export f_in_goal, f_mindist_time, f_one_over_mindist_time, f_exp_neg_mindist, f_exp_neg_dist, f_one_over_mindist, f_one_over_dist, f_intruder_dist, f_one, f_goal_dist, f_abs_goal_bearing, f_radial_intruder_grid, f_radial_goal_grid, f_exp_neg_goal_dist, f_within_goal_dist, f_conflict, f_focused_intruder_grid, f_half_intruder_bin_grid, f_has_deviated, f_symmetric_goal_grid
type FeatureBlock
members::Vector{Any}
uses_mem::Bool
end
function FeatureBlock{T}(members::Vector{T})
mymem = {}
for m in members
if isa(m,Symbol) #判断m是否为symbol类型
push!(mymem,FeatureFunction(m)) #push!是什么意思?
else
push!(mymem,m)
end
end
return FeatureBlock(mymem, any([uses_mem(m) for m in mymem]))
end
length(b::FeatureBlock) = sum([length(m) for m in b.members]) #???
uses_mem(b::FeatureBlock) = b.uses_mem #???
# fun returns a single element vector, there are many param values
type ParameterizedFeatureBlock
fun::Symbol
params::Vector{Any}
end
length(b::ParameterizedFeatureBlock) = length(b.params)
uses_mem(b::ParameterizedFeatureBlock) = false
# fun may return a multi-element vector, there is only one param value
type ParameterizedFeatureFunction
fun::Symbol
param::Any
uses_mem::Bool
length::Int64
end
ParameterizedFeatureFunction(fun::Symbol, param::Any) = ParameterizedFeatureFunction(fun, param, false)
function ParameterizedFeatureFunction(fun::Symbol, param::Any, memory::Bool)
ret = eval(fun)(gen_test_state(), param)
return ParameterizedFeatureFunction(fun, param, memory, length(ret))
end