問題タブ [indirection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arrays - local -a 'xkeys=("${!'"$1"'[@]}")' の説明
このコードは、配列の長さとインデックスを間接的に取得する例として、bash-hackers.org wiki ページで配列間接化の回避策として提供されています。
このStackoverflow questionにも記載されています。
なぜ機能するのかを具体的に理解したいと思いlocal -a 'xkeys=("${!'"$1"'[@]}")'
ます。ここで何が起きてるの。等号の右側に 3 つの異なる文字列があることを理解しています。
- 'xkeys=("${!'
- 「$1」
- '[@]}")'
なぜそれが機能するのですか?
これはコードです:
ありがとう
macros - ALET マクロとインダイレクションの使用
「Let Over Lambda」の第 6 章で、 というアナフォリック マクロを見つけましたalet
。のように機能しますが、実際にテキストに出現する前にラムダ式を使用できるため、bodylet
の最後の形式がラムダ式の場合に特に便利です。alet
これはマクロの最初のバージョンですalet%
:
ここまでは順調ですね。しかし次に、作成者は次の理由でマクロを拡張することを決定します。
alet%
本体の最後のフォーム (ラムダ フォームであると予想される) を返さないようにすることができますが、その代わりに、let フォームのレキシカル スコープ内の別の関数を検索し、代わりにその関数を呼び出す関数を作成できます。これは間接参照と呼ばれることがあります。これは、何かを行うために関数を返す代わりに、ポインター逆参照を使用して関数をルックアップし、代わりにその関数を使用する関数を返すためです。インダイレクションは、正当な理由でプログラミング言語全体に遍在する概念です。これにより、コンパイル時に間接的に修正されるものを実行時に変更できます。
alet
と定義されている:
違いはなんですか?この最終バージョンでできることとalet%
できないことは何ですか? alet
別のラムダを呼び出すラムダを返します。それは何のために良いですか?誰かが間接的な使用の例を挙げることができれば、それはありがたいです。
c - より多くのレベルの間接化が C のパフォーマンスに影響を与えるか
構造体の配列を含む構造体がある場合....そして
でアクセスしたほうがいいですか
それともこれと同じですか
または、効率が失われるレベルの数に制限があり、コンパイラの最適化は何らかの効果がありますか?
提供された洞察に事前に感謝します。
c - double void ポインターを int ポインターに逆参照する方法
次のようなコードがあります。
int ポインターを指す void double ポインターを逆参照できないのはなぜですか? 以下の 2 つの例は動作します。
スニペット:1
スニペット 2:
bash - ユーザーと既存の変数の値を確認する Bash 関数の書き方
ユーザーに値の確認を発行してもらいたい構成変数が多数あります。そのため、実行番号を指定する変数が存在する可能性があり、スクリプトでユーザーに変数の現在の値が問題ないかどうかを尋ねます。ユーザーが値に問題があると応答すると、スクリプトは新しい値を要求し、それを変数に割り当てます。
これを行うための関数を最初に試みましたが、実行に問題があります。それは失速します。問題を解決するための支援と、私が使用しているアプローチに対する批判を歓迎します。コードは次のとおりです。
arrays - Bashで連想配列のキーと値を間接的に取得する方法は?
Bash では、連想配列の名前を含む変数のみを指定すると、
連想配列のキーと値を取得するにはどうすればよいでしょうか?