RelationalAI-oss / Rematch.jl

Pattern matching
Other
52 stars 6 forks source link

Use `getproperty` with field matching #18

Open programmeroftheeve opened 5 years ago

programmeroftheeve commented 5 years ago

Requesting an update to #3 to use getproperty instead of getfield to work with calculated fields.

Example:

struct Foo
    a::Int
end
function Base.getproperty(x::Foo, f::Symbol)
    f == :b && return getfield(x,:a) + 1
    getfield(x,f)
end

@match Foo(2) begin
    Foo(a = 1) => :a
    Foo(b = 3) => :b
end

This should return :b.