class TdlSpace::DefArrayChain
Attributes
belong_to_module[RW]
chain[RW]
Public Class Methods
new(belong_to_module)
click to toggle source
# File lib/tdl/sdlmodule/sdlmodule_arraychain.rb, line 18 def initialize(belong_to_module) @chain = [] @belong_to_module = belong_to_module end
Public Instance Methods
-(name)
click to toggle source
# File lib/tdl/sdlmodule/sdlmodule_arraychain.rb, line 32 def -(name) raise TdlError.new(" Base Class cant define anything!!!") # if name.is_a? StringBandItegration # raise TDLError.new("简化定义模式不允许传入 StringBandItegration 类型") # end end
[](*a)
click to toggle source
# File lib/tdl/sdlmodule/sdlmodule_arraychain.rb, line 23 def [](*a) if a.empty? raise TdlError.new("参数不能为空") end new_dla = self.class.new(@belong_to_module) new_dla.chain = @chain + a new_dla end
check_name(name)
click to toggle source
# File lib/tdl/sdlmodule/sdlmodule_arraychain.rb, line 39 def check_name(name) check_topmodule_method(name) if name.is_a? StringBandItegration raise TdlError.new("简化定义模式不允许传入 StringBandItegration 类型") end end
check_topmodule_method(name)
click to toggle source
简化模式定义时 打通topmodule 和 itgt 方法连接,需要topmodule没有定义同名方法
# File lib/tdl/sdlmodule/sdlmodule_arraychain.rb, line 73 def check_topmodule_method(name) if $_implicit_curr_itgt_.slast.respond_to?('top_module') && $_implicit_curr_itgt_.slast.top_module.respond_to?(name) raise TdlError.new("TopModule[#{$_implicit_curr_itgt_.slast.top_module.module_name}] 已经定义了方法 [#{name}],Itgt 不能定义新方法#{name},以免发生混淆") end end
method_missing(name,*args,&block)
click to toggle source
Calls superclass method
# File lib/tdl/sdlmodule/sdlmodule_arraychain.rb, line 56 def method_missing(name,*args,&block) ClassHDL::AssignDefOpertor.with_rollback_opertors(:old) do if name !~ /\w+/ super end if args && args.any? && args[0].is_a?(Hash) args[0].each do |key,value| self.instance_variable_set("@#{key}",value) end end self - name end end
to_inp(name)
click to toggle source
# File lib/tdl/sdlmodule/sdlmodule_arraychain.rb, line 46 def to_inp(name) check_name(name) if $_implicit_curr_itgt_.slast yname = name.to_inp($_implicit_curr_itgt_.last) else yname = name end return yname end