class COS::Struct::Base

Public Class Methods

new(options = {}) click to toggle source
# File lib/cos/struct.rb, line 24
def initialize(options = {})
  # 意外参数检测
  unless optional_attrs.include?(:SKIP_EXTRA)
    extra_keys = options.keys - required_attrs - optional_attrs
    unless extra_keys.empty?
      raise AttrError, "Unexpected extra keys: #{extra_keys.join(', ')}"
    end
  end

  # 必选参数检测
  required_keys = required_attrs - options.keys
  unless required_keys.empty?
    raise AttrError, "Keys: #{required_keys.join(', ')} is Required"
  end

  # 动态创建实例变量
  (required_attrs + optional_attrs).each do |attr|
    instance_variable_set("@#{attr}", options[attr])
  end
end