OpalRB:如何将函数作为参数传递

3
我在我的MeteorJS项目中使用Opal。
我正在尝试找出一种方法来执行“Meteor.startup”代码,但似乎不起作用。
我以为这样做会起作用:
require 'native'

@Meteor = `Meteor`
@Meteor.startup do
  puts 'Go'
end

但事实并非如此。编译后的代码应该如下所示:
Meteor.startup( function() {
  console.log( "GO" );
} );

在JS中将函数作为参数传递非常常见,那么在Opal中我们该如何做到这一点呢?

你正在使用https://github.com/marcandre/meteor-opal吗? - ylluminate
2个回答

4
以下内容应该可以正常工作:
require 'native'

@Meteor = Native(`Meteor`)
@Meteor.startup -> {
  puts 'Go'
}

请注意,使用Native时您需要传递一个lambda表达式而不是块。


1
你可以选择使用Native(在其下面包装JS对象),如Elia所建议的,或者...
@Meteor = `Meteor`
@Meteor.JS.startup do
  puts 'Go'
end

X.JS.y 这样的调用会直接编译为 X.y()。同样地,您可以访问像 X.JS[:propname] 这样的属性(编译为 X.propname)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接