問題タブ [destructuring]
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.
javascript - 破壊割り当てを使用して、CoffeeScriptで投影を実行できますか?
CoffeeScriptでの破壊的な割り当てを理解するのに問題があります。ドキュメントには、割り当て中にオブジェクトの名前を変更してソースオブジェクトを投影(つまり、マップ、変換、変換)できることを示唆しているように見えるいくつかの例が含まれています。
に投影しようとしa = [ { Id: 1, Name: 'Foo' }, { Id: 2, Name: 'Bar' } ]
てb = [ { x: 1 }, { x: 2 } ]
います。私は成功せずに次のことを試みました。私は明らかに何かを誤解しました。これが可能かどうか誰かが説明できますか?
戻らない私の貧しい試み[ { x: 1 }, { x: 2 } ]
CoffeeScriptの並列割り当ての例
この例は、変数の名前を変更できることを意味していると理解しています。この場合は、スワップを実行するために使用されます。
CoffeeScriptの任意のネストの例
この例は、配列の要素を変数に割り当てることを含む、任意のオブジェクトからのプロパティの選択を定義するものとして理解しています。
更新:jhのソリューションを使用してネストされたオブジェクトの配列をフラット化する
clojure - def形式で破壊しないのはなぜですか?
フォーム(ここではClojure)で、let
次のようなことができます
wheresvd
は長さ 3 のリストを返します。これは非常に自然なことです。
フォームのデフォルトの動作としてのさまざまな一般化def
? def
これがすでに行っていることとどのように干渉するかわかりません。Zen of Lisp や Clojure を理解している人は、なぜdef
が ほど強力なバインディング (破壊による) をサポートしないのか説明できますかlet
?
f# - F#での破壊を抽象化する方法
私は本当に取り除きたいコードの繰り返しがあります-
ご覧のとおり、これは同じアルゴリズムを3回繰り返したものです。ただし、のような破壊機能を渡す必要があるコードを一般化する方法がわかりませんmatch expr with | destructureFn a -> Some a | _ -> None
。誰かが助けることができますか?私は実際にコードに5回の繰り返しがあり(そして成長している)、それを因数分解する必要があります。
乾杯!
* 結論 *
descoの答えを使用して、私はこのリファクタリングに到達しました-
ありがとうdesco!
clojure - 変数のリストを個別にclojure関数に渡す
私はclojureで遊んでいて、mapcatとlistを組み合わせてこの動作をエミュレートする高階関数を作成することにしました。
私の最初の試みは、mapcatListを次のように定義することでした。
明らかに、関数は私が望むように動作しません。これは、2つのリストが1つのリストに入れられ、2つではなく1つの引数として渡されるためだと思います。私は次のようにして状況を改善することができました、
このソリューションは2つのリストでうまく機能しますが、関数が可変数の引数で機能するようにしたいと思います。
私の質問:可変数の引数を関数に渡してから、それらを分解して、個々の引数として一緒に「mapcatリスト」に渡されるようにするにはどうすればよいですか?
clojure - 地図の再構築
Clojure では、次のようにマップを分解できます。
これは、CoffeeScript のメソッドに似ています。
CoffeeScript もこれを行うことができます。
Clojureにこのようなショートカットはありますか?
macros - マクロパラメータの分解は「本当に必要」ですか?
LISP マクロ パラメータでの構造化解除は便利なことだと理解しています。必須なのか気になります。例として、
と
パラメータの正しい形式をチェックすることを除いて、(ほぼ)同等のようです。
私の推測では、分解するとコードの記述/理解が容易になりますが、それを使用するコードは、そうでないコードに変換される可能性があります。私は正しいですか、それとも愚かな初心者の間違いですか?
javascript - ブロックによる定数宣言
最近、私は Firefox Add-on Builder SDK のソースを調べていて、そのような定数宣言に出くわしました:
CommonJS Modulesに関する情報を見つけることができましたが、この割り当ての左側の部分は、言語固有でなければならず、それについて何もググることができなかったため、少し混乱しました。
ここで何が起こっているのかを説明する仕様/草案を教えてもらえますか?
javascript - JavaScript関数のオブジェクトパラメータ構文に関する情報はどこで入手できますか?
このような関数を呼び出したい場合:
通常、関数定義は次のように表現する必要があります。
しかし、この素晴らしい構文は、関数を定義するためのspidermonkeyで完全に有効です。
この機能は何ですか?
clojure - セットからソート済みセットへ
破壊に関連するある種の精神的な障害にぶつかっています...
与えます:
しかし、どのように同じソート済みセットを取得できますか:
または引数として渡されたセット (ソートされていない) から:
私はいくつかの破壊を試みました、私はそれを考えていました:
動作しますが、そうではありません。
その方法を知りたいのですが、なぜ私の推論が偽物なのか説明していただければなおさらです...
clojure - 元の値を保持したまま、Clojure 関数のパラメーターを分解します。
関数パラメーターを分解しても、元のパラメーターを使用できるようにすることはできますか? 今のやり方let
は関数本体の中でフォームを使っているだけなのですが、もっと簡潔なやり方がなかったのでしょうか。