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)

上一篇下一篇

猜你喜欢

热点阅读