加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 将哈希传递给接受关键字参数的函数

发布时间:2020-12-16 19:15:50 所属栏目:百科 来源:网络整理
导读:我有像这样的哈希= {“band”= “for King Country”,“song_name”= “物质”}和一个类: class Song def initialize(*args,**kwargs) #accept either just args or just kwargs #initialize @band,@song_name endend 我希望将散列作为关键字参数传递,如Son
我有像这样的哈希= {“band”=> “for King& Country”,“song_name”=> “物质”}和一个类:
class Song
  def initialize(*args,**kwargs)
    #accept either just args or just kwargs
    #initialize @band,@song_name
  end
end

我希望将散列作为关键字参数传递,如Song.new band:“for King& Country”,song_name:“Matter”是否可能?

解决方法

您必须将哈希中的键转换为符号:
class Song
  def initialize(*args,**kwargs)
    puts "args = #{args.inspect}"
    puts "kwargs = #{kwargs.inspect}"
  end
end

hash = {"band" => "for King & Country","song_name" => "Matter"}

Song.new(hash)
# Output:
# args = [{"band"=>"for King & Country","song_name"=>"Matter"}]
# kwargs = {}

symbolic_hash = hash.map { |k,v| [k.to_sym,v] }.to_h
#=> {:band=>"for King & Country",:song_name=>"Matter"}

Song.new(symbolic_hash)
# Output:
# args = []
# kwargs = {:band=>"for King & Country",:song_name=>"Matter"}

在Rails / Active Support中有Hash#symbolize_keys

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读