请问:
hash={:name=>"nanana",:sex=>"male"}
method(hash)
和
method(:name=>"nanana",:sex=>"male")
有什么区别啊?
直接用第一个会有一个警告:
parenthesize argument(s) for future version
请知道的同学说一下用一个hash变量和用hash的展开形式有何不同,ruby底层是怎样判断的。谢谢!
请问:
hash={:name=>"nanana",:sex=>"male"}
method(hash)
和
method(:name=>"nanana",:sex=>"male")
有什么区别啊?
直接用第一个会有一个警告:
parenthesize argument(s) for future version
请知道的同学说一下用一个hash变量和用hash的展开形式有何不同,ruby底层是怎样判断的。谢谢!
我试过,没有出现你说的问题。
关于hash做参数,method() 只能用于hash做最后一个参数的时候,这样:method(arg1,arg2,:name=>"nanana",:sex=>"male")
好处:不用记住参数的顺序,rails中大量采用这种参数方式。
建议你把你出错的代码帖出来,感觉不是hash的问题。是你代码格式的问题。
warning: parenthesize argument(s) for future version
这个语句的意思是应该是在使用 函数时对于其后面的参数 同时 加上括号和空格--主要是Ruby允许参数直接使用不需要加括号而用一个空格隔开。如果同时用上当然会提示你代码多余了。也就是提示你要么去掉那条语句的括号要么去掉括号前面的那个空格。
不过我建议去掉那个空格比较保险