You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 08:58:19