Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1407793
  • 博文数量: 244
  • 博客积分: 3321
  • 博客等级: 中校
  • 技术积分: 2704
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-26 08:17
个人简介

微信公众号:杰夫弹弹看

文章分类

全部博文(244)

文章存档

2018年(4)

2017年(32)

2016年(25)

2015年(28)

2014年(27)

2013年(34)

2012年(25)

2011年(30)

2010年(39)

分类: Python/Ruby

2014-03-30 12:36:40

如果使用1.8的ruby,项目编译运行经常会遇到如下的警告
warning: already initialized constant


这个就是因为load多次造成,为什么会load多次呢? 

给了一下解释


比如下面这个测试程序(比如命名machine.rb,这个文件在~/test目录下)

点击(此处)折叠或打开

  1. module MyWork
  2.   IPADDR = 0x16df
  3. end



我们在另外一个主rb文件(mytestmod.rb,和machine.rb在同一目录下)需要用到上面模块中的常量

点击(此处)折叠或打开

  1. require './machine'
  2. require '../test/machine'
  3. class Book
  4.   attr_reader :name, :price
  5.   def initialize(name, price)
  6.     @name = name
  7.     @price = price
  8.   end

  9. end
  10. book = Book.new('hello world', 120)
  11. puts book.name



注意上面的例子,我们对同一个文件require了两次,如果使用ruby1.8,就会有
../test/machine.rb:4: warning: already initialized constant IPADDR
hello world


但是ruby1.9,不会出现这个问题
hello world
阅读(6240) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~