Button function :)

Hi everyone! I have been playing around with codea, and I just made a button function (Yes, that does say function. I didn’t like the way that if you were using a class how you had to say Button:draw()). Here is my code:

function setup()
    rectMode(CENTER)
    button = function (x,y,w,h) return 0 end
end

function draw()
    background(0, 0, 0, 255)
    fill(0,255,0)
    if button(200,200,200,100) == true then
        background(255, 255, 255, 255)
    elseif button(200,200,200,100) == -1 then
        fill(0,200,0)
    end
    
    rect(200,200,200,100)
end

function touched(touch)
    function button(x,y,w,h)
        --[[ This is my attempt on making a button function,
            I thought about making it automatically draw a shape,
            but I could see how that could get messy very quickly.
            It is affected by the current rectMode(). ]]--
        if rectMode() == CORNER then
            w = x + w
            y = y + h
        elseif rectMode() == CENTER then
            x = x - w / 2
            y = y - h / 2
            w = x + w
            h = y + h
        elseif rectMode() == RADIUS then
            x = x - w
            y = y - h
            w = x + w * 2
            h = y + h * 2
        end
        if touch.x > x and 
        touch.x < w and
        touch.y > y and 
        touch.y < h then
            if touch.state == ENDED then
                return true
            else
                return -1
            end
        else
            return false
        end
    end
end