Ruby 类常量 + allocate + Self
2017-09-29 本文已影响54人
changsanjiang
#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
# 类常量
# => 我们可以在类的内部定义一个常量. 常量的定义不需要使用 @ 或 @@.
# => 按照惯例, 常量的名称使用大写.
# => 一旦常量被定义, 就不能改变他的值.
# => 可以在类的内部直接访问常量, 就像是访问变量一样.
# => 如果想要在类的外表访问常量, 就需要使用 classname::constant
#class Box
# BOX_COMPANY = "SJ Inc"
# def initialize(w, h)
# @width, @height = w, h
# end
#end
#puts Box::BOX_COMPANY
# 使用 allocate 创建对象
# => 可能有一种情况, 我们想要在不调用对象构造器 initialize 的情况下创建对象.
# => 在这种情况下, 我们可以调用 allocate 来创建一个未初始化的对象.
#class Box
# def initialize(w, h)
# @width, @height = w, h
# end
#
# def to_s
# "width = #{@width}, height = #{@height}"
# end
#end
#box = Box.allocate
#puts box
#box = Box.new(120, 20)
#puts box
# 类信息
# => Ruby 的的代码逐行执行, 在不同的上下文中 self 有不同的含义.
class Box
puts "Class of self = #{self.class}"
puts "Name of self = #{self.name}"
def initialize(w, h)
@width, @height = w, h
puts self
end
end
box = Box.new(120, 20)