我正在使用第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 `<main>'
答案 0 :(得分:2)
这是因为name
在您的情况下是String
任何方式,而不是Hash
。看一个相同的例子:
name = "good"
name[:a]
# `[]': no implicit conversion of Symbol into Integer (TypeError)
当您执行my_name.format_name("Jessica Flores")
, 名称 等方法调用时,会保留对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