这是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