这是Ruby中符号的正确用法吗?
我正在使用第4行的符号进行代码挑战。 第4行的代码在做什么? 第4行是否未正确使用符号这是Ruby中符号的正确用法吗?,ruby,symbols,typeerror,incompatibletypeerror,Ruby,Symbols,Typeerror,Incompatibletypeerror,我正在使用第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_na
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`[]:无法将符号转换为整数(TypeError)
from test.rb:6:in'format_name'
来自测试。rb:17:in`'
这是因为在您的情况下,名称
是一个字符串
,而不是散列
。请看一个相同的示例:
name = "good"
name[:a]
# `[]': no implicit conversion of Symbol into Integer (TypeError)
当您执行类似于my\u name.format\u name(“Jessica Flores”)
的方法调用时,name则持有对字符串的引用实例“Jessica Flores”
。现在只需要将数字、范围、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
String#[]
也接受String。来自文档:a=“你好”;a[“lo”];#=>“lo”;a[“再见”];#=>零代码>@DarekNędza是。。。我错过了。您是否使用vim
?我需要帮助。不,对不起。我只是pry
ing.Ruby有隐式返回,您可以从第4行删除return
,只保留字符串插值
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