Ruby,在交互式Ruby中运行时出错

Ruby,在交互式Ruby中运行时出错,ruby,irb,Ruby,Irb,我是ruby新手,当我在中运行它时,一切都很好,我得到了想要的输出,但是当我在InteractiveRuby中运行它时,我在屏幕截图中得到了错误 # MyVector Class class MyVector include Enumerable def initialize (a) if !(a.instance_of? Array) raise "ARGUMENT OF INITIALIZER MUST BE AN ARRAY" else @

我是ruby新手,当我在中运行它时,一切都很好,我得到了想要的输出,但是当我在InteractiveRuby中运行它时,我在屏幕截图中得到了错误

# MyVector Class
class  MyVector
  include Enumerable
  def initialize (a)
    if !(a.instance_of? Array)
      raise "ARGUMENT OF INITIALIZER MUST BE AN ARRAY"
    else
      @array = a
    end
  end

  def toArray
    @temp = Array.new(@array.length())
    i=0
    while(i<@array.length())
      @temp[i] = @array[i]
      i+=1
    end
    @temp
  end

  def to_s
    @array.to_s
  end

  def length
    @array.length()
  end

  def [](i)
    @array[i]
  end

  def each2(a)
    raise Error, "INTEGER IS NOT LIKE VECTOR" if a.kind_of?(Integer)
    Vector.Raise Error if length != a.length
    return to_enum(:each2, a) unless block_given?
    length.times do |i|
      yield @array[i], a[i]
    end
    self
  end

  def * (a)
    if a.kind_of? MyVector
      Vector.Raise Error if length != a.length
      p = 0
      each2(a) {|a1, a2|p += a1 * a2}
      p

    elsif a.kind_of? MyMatrix
      @temp = Array.new(a.transpose().length())
      i=0
      while(i<@temp.length())
        @temp[i] = (a.transpose()[i] * self)
        i+=1
      end
      MyVector.new(@temp)
    end
  end

end

# MyMatrix Class
class MyMatrix
  include Enumerable
  def initialize a
    @array=Array.new(a.length())
    i=0
    while(i<a.length)
      @array[i]=MyVector.new(a[i])
      i+=1
    end
  end

  def to_s
    "["+@array.map { |i| "'" + i.to_s + "'" }.join(",")+"]"
  end

  def length
    @array.length()
  end

  def [](i)
    @array[i]
  end

  def transpose
    @temp = Array.new(@array.length())
    i=0
    while(i<@array.length())
      @temp[i] = @array[i].toArray()
      i+=1;
    end
    MyMatrix.new(@temp.transpose())
  end

  def *m
    if m.kind_of? MyMatrix
      @temp=Array.new(@array.length())
      i=0
      while (i<@array.length())
        @temp[i] = (@array[i] * m).toArray()
        i+=1
      end
      MyMatrix.new(@temp)
    end
  end
end

#MyVector类
类MyVector
包括可枚举的
def初始化(a)
如果!(a.数组的实例_)
raise“初始值设定项的参数必须是数组”
其他的
@数组=a
结束
结束
def托雷
@temp=Array.new(@Array.length())
i=0

(i您正在运行的那些命令(
cdd:\
ruby hwk7.rb
)应该从终端运行,而不是从irb内部运行。退出irb并再次尝试运行它们。

请澄清,如何在windows中从终端运行?嗯,我不使用windows,但我相信它在那里被称为命令提示符。如果您从“开始”菜单运行命令
cmd
,我想它会给您一个命令提示符。