This is my demo, my goal is run set_grade!
successfully. How can achieve this?
# try demo
mutable struct Group
members::Dict{String, Int64} # project => grade
const list::Vector{String} # project name list
const set_grade!::Function
#
function set_grade!(group::Group, project::String, grade::Int64)
if project in group.list
if !(haskey(group.list, project))
push!(group.members, project => grade)
end
else
error("wrong project name: ", project)
end
end
function Base.getproperty(group::Group, prop::Symbol)
if prop == :set_grade!
return (project, grade,)->set_grade!(group, project, grade)
else
throw(UndefVarError(prop))
end
end
#
function Group()
group = new(
Dict{String,Any}(), # members
["project1", "project2", "project3"], # list
(project, grade,)->set_grade!(group, project, grade) # function
)
return group
end
end
member1 = Group();
member1.set_grade!("project1", 93) # wrong