Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这是Ruby中符号的正确用法吗?_Ruby_Symbols_Typeerror_Incompatibletypeerror - Fatal编程技术网

这是Ruby中符号的正确用法吗?

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

我正在使用第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`[]:无法将符号转换为整数(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