![](/img/trans.png)
[英]'undefined method `>' for nil:NilClass in ruby
[英]Ruby: undefined method * for nil nilclass
對於在irb中運行的此代碼,我有未定義的方法*。 我在Windows 7 x32上使用ruby 2.0.0p195(2013-05-14)[i386-mingw32]。 它為幾何形狀做了兩個簡單的類。
class Shape
ERR = 'Error: area or perimeter method missing.'
PI = 3.14159265358
attr_accessor :id
def initalize(id = 'shape')
@id = id
end
def get_area
raise ERR
end
def get_perimeter
raise ERR
end
def to_s
"id: #{@id}, area: #{get_area}, perimeter: #{get_perimeter}"
end
end
class Triangle < Shape
attr_accessor :a, :b, :c, :h
def initalize(id = 'triangle', a = 1, b = 2, c = 3, h = 4)
@id = id
@a, @b, @c, @h = a, b, c, h
end
def get_area
@b * @h * 0.5
end
def get_perimeter
@a + @b + @c
end
end
這些是帶有irb的命令。
irb(main):001:0> load 'shapes.rb'
=> true
irb(main):002:0> tri = Triangle.new
=> #<Triangle:0x22d17c8>
irb(main):003:0> puts tri
NoMethodError: undefined method `*' for nil:NilClass
from shapes.rb:41:in `get_area'
from shapes.rb:28:in `to_s'
from (irb):3:in `puts'
from (irb):3:in `puts'
from (irb):3
from D:/Ruby/bin/irb:12:in `<main>'
您拼寫了initialize
方法,並寫了initalize
。
這就是為什么您的變量之一為nil
並且出現NoMethodError: undefined method ... for nil:NilClass
異常NoMethodError: undefined method ... for nil:NilClass
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.