iteye_12339 2009-04-24 16:09
浏览 232
已采纳

ruby函数的参数

请问:

hash={:name=>"nanana",:sex=>"male"}

method(hash)

method(:name=>"nanana",:sex=>"male")

有什么区别啊?

直接用第一个会有一个警告:

parenthesize argument(s) for future version

请知道的同学说一下用一个hash变量和用hash的展开形式有何不同,ruby底层是怎样判断的。谢谢!

  • 写回答

2条回答 默认 最新

  • Candyut 2009-04-24 20:06
    关注

    我试过,没有出现你说的问题。
    关于hash做参数,method() 只能用于hash做最后一个参数的时候,这样:method(arg1,arg2,:name=>"nanana",:sex=>"male")
    好处:不用记住参数的顺序,rails中大量采用这种参数方式。
    建议你把你出错的代码帖出来,感觉不是hash的问题。是你代码格式的问题。

    warning: parenthesize argument(s) for future version
    这个语句的意思是应该是在使用 函数时对于其后面的参数 同时 加上括号和空格--主要是Ruby允许参数直接使用不需要加括号而用一个空格隔开。如果同时用上当然会提示你代码多余了。也就是提示你要么去掉那条语句的括号要么去掉括号前面的那个空格。
    不过我建议去掉那个空格比较保险

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作