这是一个正确的使用Ruby的符号?
我正在使用在线4 什么是第4行的代码做符号的代码的挑战? 是线4未正确使用符号???这是一个正确的使用Ruby的符号?
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>'
这是因为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#[]
预计仅作为它的参数要么数字号码或范围或正则表达式或串。但是,并非符号按文档。
我会写你的代码如下:
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
'字符串#[]'需要串以及。从文档:'a =“你好”; a [“lo”]; #=>“lo”; 一个[ “再见”]; #=>零;' –
@DarekNędza是的......我错过了。你使用'vim'吗?我需要帮助。 –
不,对不起。我只是'撬'。 –
Ruby有隐含的回报,你可以从第4行中删除'return'和只留下串插 –