这是Ruby中符号的正确使用吗?

我正在使用第4行的符号进行代码质询。第4行的代码是做什么的? 第4行没有正确使用符号???

1 class NameThingy 2 3 def format_name(name) 4 return "#{name[:last]}, #{name[:first]}" 5 end 6 7 def display_name(name) 8 puts format_name(name) 9 end 10 11 end my_name = NameThingy.new#("Jessica Flores") my_name.format_name("Jessica Flores") my_name.display_name("Jessica Flores") 

当我运行它时,我收到此错误消息:

 test.rb:6:in `[]': can't convert Symbol into Integer (TypeError) from test.rb:6:in `format_name' from test.rb:17:in `' 

这是因为在你的情况下, name是一个String ,而不是Hash 。 看一个同样的例子:

 name = "good" name[:a] # `[]': no implicit conversion of Symbol into Integer (TypeError) 

当您执行my_name.format_name("Jessica Flores")类的方法调用时, name ,然后保持对String实例"Jessica Flores"的引用。 现在String#[]只需要作为参数的数字范围regexp字符串 。 但不是符合文档的符号

我会写下你的代码如下:

 class NameThingy def format_name(name) return name.split(" ").join(",") end def display_name(name) puts format_name(name) end end my_name = NameThingy.new my_name.format_name("Jessica Flores") my_name.display_name("Jessica Flores") # >> Jessica,Flores 
Interesting Posts