gpt4 book ai didi

java - 将 ArrayList 作为 RubyArray 传递给 Ruby

转载 作者:行者123 更新时间:2023-11-30 03:52:23 24 4
gpt4 key购买 nike

在 Ruby 中,如果你做了类似的事情

print ["Hello", 1, 2]

你会得到类似的输出

["Hello" , 1 , 2]

<小时/>

有一些ArrayList对象,Java中的list。它包含 Object 类型的对象。

我正在将此列表传递给我的 Ruby 代码。当您打印此内容时,控制台会输出类似

<Java::JavaUtil::ArrayList:0x5ab077a7>

这当然是正确的。

但是,我希望得到与上面相同的行为。如果 list 包含两个 Object 类型的对象,当 Ruby 识别它时,我想要获取

[Object:0x1234567 , Object:0x21432423]

而不是列表本身的引用。

我怀疑我应该在将 list 传递给 Ruby 之前将其转换为 RubyArray。但如何呢?

最佳答案

如果您查看 org.jruby.RubyArray 的 API,您会发现一个 newArray 工厂方法:

java.util.ArrayList list = new java.util.ArrayList();
org.jruby.RubyArray array = org.jruby.RubyArray.newArray(runtime, list);

当然,您需要引用 org.jruby.Ruby runtime,它可以从 Java 端(取决于您的使用场景)通过几种方法:

org.jruby.Ruby.getGlobalRuntime();
org.jruby.Ruby.getThreadLocalRuntime();

还请注意,有一个运行时实例,有几个“帮助器”工厂方法可以在 Java 中创建 ruby​​ 对象,例如org.jruby.Ruby.getGlobalRuntime().newArray(list)

关于java - 将 ArrayList 作为 RubyArray 传递给 Ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24102055/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com