有没有办法在Opal中使用ruby Math库?
在我的ruby方法中使用Uncaught NameError: uninitialized constant Object::Math
时,我收到以下错误消息Math::PI
。
红宝石代码:
class Numeric
def degrees
self * Math::PI / 180
end
end
Opal生成的javascript:
/* Generated by Opal 0.6.3 */
(function($opal) {
var self = $opal.top, $scope = $opal, nil = $opal.nil, $breaker = $opal.breaker, $slice = $opal.slice, $klass = $opal.klass;
$opal.add_stubs(['$/', '$*']);
return (function($base, $super) {
function $Numeric(){};
var self = $Numeric = $klass($base, $super, 'Numeric', $Numeric);
var def = self._proto, $scope = self._scope;
return (def.$degrees = function() {
var $a, $b, self = this;
return self['$*']((($a = ((($b = $scope.Math) == null ? $opal.cm('Math') : $b))._scope).PI == null ? $a.cm('PI') : $a.PI))['$/'](180);
}, nil) && 'degrees'
})(self, null)
})(Opal);
//# sourceMappingURL=/__opal_source_maps__/game_engine/numeric.js.map
;
谢谢;)
答案 0 :(得分:2)
Math
模块位于Opal的stdlib
中,并且未包含在默认运行时中(据我所知)。
根据您的部署上下文,将build
模块Math
Opal::Builder.build('math')
放入文件中可能最简单。
但是,对于您的具体示例,您可以使用JS PI近似(无论如何都是Opal' s Math::PI
所做的):
class Numeric
def degrees
self * `Math.PI` / 180
end
end