1

mruby 1.3.0 (2017-7-4)使用build_config.rb

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

我发现const_getmruby 中的方法与 ruby​​ 中的方法不同。在 ruby​​ (2.4.0p0) 中,Class.const_get('Fixnum')返回常量Fixnum,而在 mrubyClass.const_get('Fixnum')中导致错误uninitialized constant Class::Fixnum (NameError)

然后,我尝试了另一个示例:class Hoge; end; class Hoge::Fuga; end. 在 ruby​​ 中,两者都Class.const_get('Hoge::Fuga')给出Hoge.const_get('Fuga')常量Hoge::Fuga。在 mruby 中,只有Hoge.const_get('Fuga')返回Hoge::Fuga

4

1 回答 1

0

mruby 的Module#const_get工作类似于 CRuby 中的第二个参数(命名inherit为搜索超类)false。如果您Object.const_get(:Integer)改用它,它的行为应该与您在 mruby 和 CRuby 中所期望的相同。

于 2017-12-18T10:10:27.740 回答