2014-03-13 33 views
0

我在紅寶石是新運行時收到錯誤,一切都很好,當我在eclipse (Screenshot)運行它,我得到所需的輸出,但是當我在交互式Ruby運行它,我得到的屏幕截圖錯誤紅寶石,在交互式Ruby

enter image description here

# 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 
    "["[email protected] { |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 

回答

1

你正在運行這些命令(cd D:\ruby hwk7.rb)都應該是從終端上運行,而不是從內部IRB。退出IRB並嘗試再次運行它們。

+0

請清楚,如何在Windows終端從運行? –

+0

嗯我不使用Windows,但我相信這就是所謂的命令提示符出現。如果您從開始菜單中的命令'cmd'我認爲它會給你一個命令提示符。 – sevenseacat

+0

的工作,謝謝 –