Ruby: NoMethodError 没有命名未定义的方法?
Ruby: NoMethodError without naming the undefined method?
我正在尝试在 Ruby 中实现我的第一个程序,但我一直收到无方法错误:
undefined method ` ' for MyString:Class (NoMethodError) from assignment.rb:1:in `<main>
我无法弄清楚原因,也无法在网上找到任何可以帮助我解决此问题的方法。我敢肯定它是我错过的一些简单的东西,但非常感谢这方面的帮助,谢谢。我的代码如下。
class MyString
def initialize(txt1 = "Hello, World!")
@str = txt1
@letters = Hash.new
end
def str
@str
end
def letters
@letters
end
def frequency
@str.downcase.each_char.with_object({}) { |c,h|
(h[c] = h.fetch(c,0) + 1) if c =~ /[a-z]/ }
end
def histogram
@str.downcase!
freqs = {}
freqs.default = ''
@str.each_char { |char| freqs[char] += '*'}
("a".."z").each {|x| puts "#{x} : #{freqs[x]}" }
end
end
检查您的文件是否有一些不可见的白色space,这不是常规 space </code>。
通常,在使用德语键盘的 Mac 上,同样的事情也会发生在我身上(我认为是在某些修饰键 + Space 上)。
最简单的方法是在终端的编辑器中打开所有文件,例如 <code>vim
或只是 cat
,因为特殊字符通常显示在那里(作为一些奇怪的 unicode 序列)。
NoMethodError without naming the undefined method?
方法 被命名为 ,它就在引号之间的错误消息中:
undefined method ` ' for MyString:Class (NoMethodError) from assignment.rb:1:in `<main>
↑
您尝试调用的方法的名称是
,它是一个 Unicode U+AA00 不间断 space.
您应该养成准确阅读错误消息和警告的习惯。例如,您在此处发布错误消息时也没有复制最后的单引号,它应该说 `<main>'
而不是 `<main>
。您还应该配置您的编辑器 / IDE 以显示白色 space.
我正在尝试在 Ruby 中实现我的第一个程序,但我一直收到无方法错误:
undefined method ` ' for MyString:Class (NoMethodError) from assignment.rb:1:in `<main>
我无法弄清楚原因,也无法在网上找到任何可以帮助我解决此问题的方法。我敢肯定它是我错过的一些简单的东西,但非常感谢这方面的帮助,谢谢。我的代码如下。
class MyString
def initialize(txt1 = "Hello, World!")
@str = txt1
@letters = Hash.new
end
def str
@str
end
def letters
@letters
end
def frequency
@str.downcase.each_char.with_object({}) { |c,h|
(h[c] = h.fetch(c,0) + 1) if c =~ /[a-z]/ }
end
def histogram
@str.downcase!
freqs = {}
freqs.default = ''
@str.each_char { |char| freqs[char] += '*'}
("a".."z").each {|x| puts "#{x} : #{freqs[x]}" }
end
end
检查您的文件是否有一些不可见的白色space,这不是常规 space </code>。
通常,在使用德语键盘的 Mac 上,同样的事情也会发生在我身上(我认为是在某些修饰键 + Space 上)。
最简单的方法是在终端的编辑器中打开所有文件,例如 <code>vim
或只是 cat
,因为特殊字符通常显示在那里(作为一些奇怪的 unicode 序列)。
NoMethodError without naming the undefined method?
方法 被命名为 ,它就在引号之间的错误消息中:
undefined method ` ' for MyString:Class (NoMethodError) from assignment.rb:1:in `<main>
↑
您尝试调用的方法的名称是
,它是一个 Unicode U+AA00 不间断 space.
您应该养成准确阅读错误消息和警告的习惯。例如,您在此处发布错误消息时也没有复制最后的单引号,它应该说 `<main>'
而不是 `<main>
。您还应该配置您的编辑器 / IDE 以显示白色 space.