2

Ruby のブロックに似た言語構造を実装したいと考えています。そう

main()
{
    i = 123
    array.function(|x| { puts x + i; }) //the block needs access to the local variable i
}

正常にコンパイルされるはずです。ソースコードを 1 時間見ましたが、CI があまり得意ではないので、どのように実装するのかまだわかりません。私が最初に考えたのは、アドレスがパラメーターとして渡されるネストされた関数であるということでしたが、ネストされた関数がローカル変数にどのようにアクセスできるかはわかりません。ほとんどの言語ではこれが不可能であるように思われるからです。誰かがこれを実装する方法のアイデアを私に与えることができれば、私はとてもうれしいです

4

1 に答える 1

0

これがCでのコードブロックとyieldの実装です。役立つかもしれません。 http://tilarids.blogspot.com/2012/03/ruby-like-blocks-and-yield-keyword-in-c.html

于 2012-07-20T08:39:12.990 に答える