Ruby 数组的未定义方法

Ruby 数组的未定义方法,ruby,oop,Ruby,Oop,因此,我收到错误消息“undefined method'ip_histogram'for#(NoMethodError)”,代码如下 class CommonLog def initialize(logfile) @logfile = logfile end def readfile @readfile = File.readlines(@logfile).map { |line| line.split() } @readfile = @r

因此,我收到错误消息“undefined method'ip_histogram'for#(NoMethodError)”,代码如下

class CommonLog
  def initialize(logfile)
    @logfile = logfile
  end
  def readfile
    @readfile = File.readlines(@logfile).map { |line|
      line.split()
    }
    @readfile = @readfile.to_s.split(" ")
  end
  def ip_histogram
    @ip_count = 0
    @readfile.each_index { |index|
      if (@readfile[index] =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/ )
        puts @readfile[index]
        puts @ip_count += 1
      end
    }
  end
end

my_file = CommonLog.new("test_log")
cleaned_file = my_file.readfile
puts cleaned_file.ip_histogram

我正在尝试读入数组并用正则表达式检查它。如果我从方法中取出代码并将其扔进主程序,它就可以工作,但我想知道为什么它不能作为方法工作。

my_file.readfile的返回值是一个数组。除非在
Array
类中定义了
ip\u直方图
,否则不能在
cleaned\u文件
中调用它

要在
数组
上定义
ip\u直方图
(定义与代码中的定义不同):


my_file.readfile
的返回值是一个数组。除非在
Array
类中定义了
ip\u直方图
,否则不能在
cleaned\u文件
中调用它

要在
数组
上定义
ip\u直方图
(定义与代码中的定义不同):


my_file.readfile
的返回值是一个数组。除非在
Array
类中定义了
ip\u直方图
,否则不能在
cleaned\u文件
中调用它

要在
数组
上定义
ip\u直方图
(定义与代码中的定义不同):


my_file.readfile
的返回值是一个数组。除非在
Array
类中定义了
ip\u直方图
,否则不能在
cleaned\u文件
中调用它

要在
数组
上定义
ip\u直方图
(定义与代码中的定义不同):


您正在将
CommonLog#readfile
的结果分配给一个新变量
cleaned_file
。您没有提供任何输入,但我现在假设@readfile是一个
数组

这意味着您的代码将假设在
数组
类上有一个实例方法
ip\u直方图
,而实际上没有

您只需按顺序运行这些命令,即可获得所需的结果:

clog = CommonLog.new("test_log")
clog.readfile
clog.ip_histogram

这里的主要区别是,我们没有使用
readfile
的返回值,因为它只需要在方法中设置变量,使
ip\u直方图
起作用。

您将
CommonLog#readfile
的结果分配给一个新变量
已清理的\u文件
。您没有提供任何输入,但我现在假设@readfile是一个
数组

这意味着您的代码将假设在
数组
类上有一个实例方法
ip\u直方图
,而实际上没有

您只需按顺序运行这些命令,即可获得所需的结果:

clog = CommonLog.new("test_log")
clog.readfile
clog.ip_histogram

这里的主要区别是,我们没有使用
readfile
的返回值,因为它只需要在方法中设置变量,使
ip\u直方图
起作用。

您将
CommonLog#readfile
的结果分配给一个新变量
已清理的\u文件
。您没有提供任何输入,但我现在假设@readfile是一个
数组

这意味着您的代码将假设在
数组
类上有一个实例方法
ip\u直方图
,而实际上没有

您只需按顺序运行这些命令,即可获得所需的结果:

clog = CommonLog.new("test_log")
clog.readfile
clog.ip_histogram

这里的主要区别是,我们没有使用
readfile
的返回值,因为它只需要在方法中设置变量,使
ip\u直方图
起作用。

您将
CommonLog#readfile
的结果分配给一个新变量
已清理的\u文件
。您没有提供任何输入,但我现在假设@readfile是一个
数组

这意味着您的代码将假设在
数组
类上有一个实例方法
ip\u直方图
,而实际上没有

您只需按顺序运行这些命令,即可获得所需的结果:

clog = CommonLog.new("test_log")
clog.readfile
clog.ip_histogram

这里的主要区别是我们没有使用
readfile
的返回值,因为它只需要在方法中设置变量,使
ip\u直方图
起作用。

如何在数组上定义ip\u直方图,在数组类上定义它?将数组类继承到CommonLog类中?如何在数组上定义ip_直方图,在数组类上定义它?将数组类继承到CommonLog类中?如何在数组上定义ip_直方图,在数组类上定义它?将数组类继承到CommonLog类中?如何在数组上定义ip_直方图,在数组类上定义它?将数组类继承到CommonLog类?啊,这马上就解决了!所有方法功能齐全,非常感谢您的帮助!你是救命恩人!啊,这马上就解决了!所有方法功能齐全,非常感谢您的帮助!你是救命恩人!啊,这马上就解决了!所有方法功能齐全,非常感谢您的帮助!你是救命恩人!啊,这马上就解决了!所有方法功能齐全,非常感谢您的帮助!你是救命恩人!