这是一个正确的使用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>' 
+0

Ruby有隐含的回报,你可以从第4行中删除'return'和只留下串插 –

这是因为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 
+0

'字符串#[]'需要串以及。从文档:'a =“你好”; a [“lo”]; #=>“lo”; 一个[ “再见”]; #=>零;' –

+0

@DarekNędza是的......我错过了。你使用'vim'吗?我需要帮助。 –

+0

不,对不起。我只是'撬'。 –