Ruby:是否存在可获取方法自身关键字参数列表的方法?
Ruby中获取方法内部关键字参数列表的方法
Ruby标准库中并没有直接提供类似self.keyword_arguments的内置方法,但可以通过以下两种方式实现你的需求:
利用方法对象的参数信息
通过method(__method__)获取当前方法的对象实例,再调用parameters方法提取关键字参数类型(:key代表带默认值的关键字参数,:keyreq代表必填关键字参数),最后筛选并提取参数名称:def test(var1: true, var2: false) method(__method__).parameters.select { |type, name| [:key, :keyreq].include?(type) }.map(&:last) end test # 返回 [:var1, :var2]通过哈希参数接收并提取
如果允许调整方法的参数结构,可以用**kwargs接收所有传入的关键字参数,直接取其键名数组:def test(**kwargs) kwargs.keys end test(var1: true, var2: false) # 返回 [:var1, :var2]若需要保留原参数的默认值逻辑,可结合固定参数和哈希参数:
def test(var1: true, var2: false, **kwargs) [:var1, :var2] + kwargs.keys end
内容的提问来源于stack exchange,提问作者user1703416
相关产品推荐
相关产品推荐

