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: , ,

历史上的今天…

历史上的今天…

Bookmark the permalink. Follow any comments here with the RSS feed for this post. Post a comment or leave a trackback: Trackback URL.

3 Comments

  1. ice5
    Posted August 7, 2007 at 10:43 am | Permalink

    你的引号错了 应该是半角的

  2. ice5
    Posted August 7, 2007 at 10:51 am | Permalink

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

  3. ice5
    Posted August 7, 2007 at 10:53 am | Permalink

    class里要有initialize()方法,没有这个方法new后肯定出错的

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*