JRuby 1.6.0.RC1を使用しています。 Ruby each
メソッドを実装するファサードを提供することによって、Rubyのより慣習的にいくつかのJavaライブラリでjava.util.Iterators
を使用したいと思います。 LocalJumpError: yield called out of block
:私はエラーを取得するeach_property {|p| puts "#{p}"}
を呼び出すときに、しかしJavaイテレータから慣用的なRubyイテレータを作成するための良いパターンファサードパターンは何ですか?
def each_property(myJavaObj)
i = myJavaObj.myIterator
while i.hasNext
yield i.next
end
end
:
私の最初の試みは、このように基本的でした。
誰でも私が間違っていることを示唆したり、RubyからJavaイテレータを呼び出すためのより良いパターンを指摘できますか?
ありがとうKoraktor、実行するコードを取得します。 –
'&block'は、あなたのメソッドがブロックを期待し、' block'という名前の 'Proc'オブジェクトに"変換 "されることを明示します。 'while'ループの中では、パラメータ(' block(i.next) 'のようなもの)で呼び出されます。 – Koraktor
申し訳ありませんが、わかりませんでした。私は&ブロックが何をするのか理解しています。私が確信していないのは、 'while'ブロックの文脈における元の' yield 'がうまくいかなかった理由です。私は何が間違っていたのかを理解して、今後同様のエラーを避けることができます! –