Ruby のブロックに似た言語構造を実装したいと考えています。そう
main()
{
i = 123
array.function(|x| { puts x + i; }) //the block needs access to the local variable i
}
正常にコンパイルされるはずです。ソースコードを 1 時間見ましたが、CI があまり得意ではないので、どのように実装するのかまだわかりません。私が最初に考えたのは、アドレスがパラメーターとして渡されるネストされた関数であるということでしたが、ネストされた関数がローカル変数にどのようにアクセスできるかはわかりません。ほとんどの言語ではこれが不可能であるように思われるからです。誰かがこれを実装する方法のアイデアを私に与えることができれば、私はとてもうれしいです