Quick actions

cmd+k|ctrl+k

Navigation

Languages

Simulate Overloading Method

Snippet info

Language

Ruby

Visibility

public

Author

yoneda

Created

2019-12-08T16:33:45Z

Updated

2019-12-09T13:38:48Z

require "set"
require "./dio.rb"

class B
end

class A < B
end

class D
end

class C < D
end
    
class M
    sig
    def fun()
        p []
    end
    
    sig Integer
    def fun(p1)
        p [p1]
    end
    
    sig Integer, Integer
    def fun(p1, p2)
        p [p1, p2]
    end
    
    sig Integer, Integer, Integer
    def fun(p1, p2, p3)
        p "Integer# #{[p1, p2, p3].inspect}"
    end
    
    sig String, String, String, String
    def fun(p1, p2, p3, p4)
        p "String# #{[p1, p2, p3, p4].inspect}"
    end
    
    sig Array, Array, Array
    def fun(p1, p2, p3)
        p "Array# #{[p1, p2, p3].inspect}"
    end
    
    sig Hash, Hash
    def fun(p1, p2)
        fun(p1, p2, {})
    end
    
    sig Hash, Hash, Hash
    def fun(p1, p2, p3)
        p "Hash# #{[p1, p2, p3].inspect}"
    end
    
    sig Set, Set, Set
    def fun(p1, p2, p3)
        p "Set# #{[p1, p2, p3].inspect}"
    end
    
    sig A, D
    def test(a, d)
        p "A & D"
    end

    sig B, C
    def test(b, c)
        p "B & C"
    end
end

M.new.fun()
M.new.fun(1)
M.new.fun(1, 2)
M.new.fun(1, 2, 3)
M.new.fun("A", "B", "C", "D")
M.new.fun({}, {})
M.new.fun(Set.new, Set.new, Set.new)

M.new.test(A.new, C.new)

puts M.new.overloading_methods("fun8")
INFO