Ich benutze mruby 1.3.0 (2017-7-4)
mit build_config.rb
:Wie funktioniert const_get in mruby?
MRuby::Build.new do |conf|
if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
toolchain :visualcpp
else
toolchain :gcc
end
enable_debug
conf.gembox 'default'
conf.gem :git => 'https://github.com/mattn/mruby-uv'
conf.gem :git => 'https://github.com/mattn/mruby-http'
conf.gem :git => 'https://github.com/iij/mruby-socket'
conf.gem :git => 'https://github.com/luisbebop/mruby-polarssl.git'
conf.gem :git => 'https://github.com/iij/mruby-digest'
conf.gem :git => 'https://github.com/iij/mruby-pack'
conf.gem :git => 'https://github.com/matsumoto-r/mruby-simplehttp.git'
conf.gem :git => 'https://github.com/matsumotory/mruby-httprequest'
conf.gem :git => 'https://github.com/iij/mruby-aws-s3.git'
end
MRuby::Build.new('host-debug') do |conf|
if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
toolchain :visualcpp
else
toolchain :gcc
end
enable_debug
conf.gembox 'default'
conf.cc.defines = %w(MRB_ENABLE_DEBUG_HOOK)
conf.gem :core => "mruby-bin-debugger"
end
MRuby::Build.new('test') do |conf|
if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
toolchain :visualcpp
else
toolchain :gcc
end
enable_debug
conf.enable_bintest
conf.enable_test
conf.gembox 'default'
end
I const_get
Verfahren unterscheidet sich in mruby von in Ruby gefunden. In Ruby (2.4.0p0) gibt Class.const_get('Fixnum')
die Konstante Fixnum
zurück, während in mruby Class.const_get('Fixnum')
die Fehlermeldung uninitialized constant Class::Fixnum (NameError)
lautet.
Dann habe ich ein anderes Beispiel versucht: class Hoge; end; class Hoge::Fuga; end
. In Rubin geben sowohl Class.const_get('Hoge::Fuga')
als auch Hoge.const_get('Fuga')
die Konstante Hoge::Fuga
. In mruby gibt nur Hoge.const_get('Fuga')
Hoge::Fuga
zurück.
Während ich Ihnen nicht erklären kann, wie 'const_get' in' mruby' funktioniert, bevorzuge ich diese Methode gegenüber der nativen Ruby-Version. Ich bin nicht sehr versiert in C-Code (ich weiß Beschämung), aber die direkte Antwort auf Ihre Frage ist [mruby 'Module # const_get'] (https://github.com/mruby/mruby/blob/master/src/class .C# L2296) und [ruby 'Modul # const_get'] (https://github.com/ruby/ruby/blob/trunk/object.c#L2417), wie Sie sehen können, da' mruby' leichtgewichtig ist eine leichtere Implementierung sowie – engineersmnky