今天碰到的问题两个:
1.class/module name must be CONSTANT
这个问题发生在定义的类或者模块首字母没有大写,我刚开始的时候是这么写的:
irb(main):002:0> class song
irb(main):003:1> def name
irb(main):004:2> @name
irb(main):005:2> end
irb(main):006:1> def artist
irb(main):007:2> @artist
irb(main):008:2> end
irb(main):009:1> def duration
irb(main):010:2> @duration
irb(main):011:2> end
irb(main):012:1> end
于是在最后一个end的时候发生了如下错误:
SyntaxError: compile error
(irb):2: class/module name must be CONSTANT
from (irb):12
from:0
再修改了之后,输入:
irb(main):013:0> class Song
irb(main):014:1> def name
irb(main):015:2> @name
irb(main):016:2> end
irb(main):017:1> def artist
irb(main):018:2> @artist
irb(main):019:2> end
irb(main):020:1> def duration
irb(main):021:2> @duration
irb(main):022:2> end
irb(main):023:1> end
=> nil
在最后一个end时得到nil值,不过接下来就碰到第二个问题了.
2.ArgumentError: wrong number of arguments
这个错误是参数设置错误,通常后面会跟一个括号指出有几处错误..比如我这个:
irb(main):024:0> song=Song.new(“Bicylops”,”Fleck”,260)
ArgumentError: wrong number of arguments (3 for 0)
from (irb):24:in `initialize’
from (irb):24:in `new’
from (irb):24
from :0
irb(main):025:0> song.artist
不过我不明白我的错误到底发生在哪里,是初始化new这个方法时参数错误…?网上很难找到相关信息,有没有高手指点一下?
你的引号错了 应该是半角的
应该又initialize()这个方法
然后再用写
def name….
这样就不会有参数错误了
class里要有initialize()方法,没有这个方法new后肯定出错的