Ruby学习笔记2

今天碰到的问题两个:
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这个方法时参数错误…?网上很难找到相关信息,有没有高手指点一下?

Technorati Tags: , ,

3 条评论

  1. 应该又initialize()这个方法
    然后再用写
    def name….
    这样就不会有参数错误了

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据