問題タブ [side-effects]

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.

0 投票する
3 に答える
281 参照

c - cで演算子'->'を使用した奇妙な副作用

Cで書いたコードで演算子'->'を使用しているときに、この奇妙な副作用が発生します。->を使用したポインターは、ごみが出るように変更されています。

すなわち:

私は次の構造体を持っています:

次を使用するListGetFirst()と、有線の動作が発生します。

デバッガーを使用したとき、前述のマークされた行でポインターリスト->ヘッドが変更されていることがわかりました。

私は本当に理由がわかりません、そして私は'->'が副作用をもたらす可能性があることを知りませんでした

前もって感謝します

0 投票する
1 に答える
2468 参照

functional-programming - D での純粋な関数型プログラミング

私の考えでは、関数の純粋さの力は、深いコード パスが副作用のないものとして検証できるときです。純粋な指定子の内部にあるコード ツリーの規模と、コードの再利用のレベルについて、人々の経験はどのようなものですか?

私が見つけたいくつかのこと:

std.algorithmはほとんど としてマークされていませんpureが、インスタンス化関数または mixin の純度を要求するアルゴリズムの純粋なバージョンによって、または純粋な指定子自体が静的にポリモーフィックであることによって、大部分が純粋である可能性があります。
のような便利なコンバーターto!string( someInt )は現在純粋ではありません。

ユーザー定義の構造体 には、次のような問題があるようです (以下に示すように)

次のコードは現在、DMD 2.052 win 32 ビットで複数のエラーを発生させます。

0 投票する
2 に答える
1112 参照

ocaml - Referential transparency in OCaml

I'm trying to reconcile the definition of referential transparency with how OCaml handles polymorphic types and side-effects. I read on https://web.archive.org/web/20120729232358/http://www.csc.villanova.edu/~dmatusze/resources/ocaml/ocaml.html that

A definition is said to have referential transparency if its meaning does not depend on the context it is in. Functions in OCaml have referential transparency, that is, changing the context (other variables and other functions) does not change the meaning of any functions you have already defined. This fact can be crucial when you are debugging a program, because you are likely to be redefining functions fairly frequently.

But the way I understand things, this can't be true in OCaml because it is possible to perform a whole bunch of side-effects (like writing to files and performing other calculations) before returning whatever was fed into the function.

You could potentially have a function f : string -> string so that f "a" does not equal f "a". We can drop in some side-effecting expressions into the body of the function that are completely invisible in the type description of f.

As an example f could be defined to return the first line of some file. There could be a function somewhere in the context of f that is changed which affects what first line f returns. Or worse, some function in the context could delete the file that f depends on which would make f undefined.

So is OCaml referentially transparent or am I missing something?

0 投票する
1 に答える
982 参照

vb.net - クラス内で構造体を定義することの副作用

初心者のvb.netの質問

クラス (X という名前) 内で構造体を定義し、そのクラス内に X 型のプロパティを作成することの副作用は何ですか?

0 投票する
6 に答える
3101 参照

javascript - 外部jQueryスクリプトを囲む

他の多くのスクリプトを含むページで使用される外部JavaScriptファイルがあります。私のスクリプトには、イベントをリッスンする多くのjQueryが含まれており、設計上、多くのグローバル変数が宣言されています。私はベストプラクティスの記事を読んでいますが、「グローバル名前空間の汚染」と不注意なスクリプトの相互作用について多くのことが言われています。

JavaScriptファイルを次のように囲む(カプセル化する)ための最良の方法は何ですか?

  • エンクロージャー外のいくつかの変数にはまだアクセスできます
  • jQueryイベントリスナーは正しく機能します

私は自由にコードを開示することはできないので、一般的な回答でもありがたいです。さらに、スクリプトをページ上の他のスクリプトに対して脆弱にするためのその他のヒントを歓迎します。

通常のJavaScriptのエンクロージャースタイルを見つけましたが、jQueryを使用するとこれが複雑になりますか?

0 投票する
6 に答える
4302 参照

c# - C#パラダイム:リストへの副作用

私は、副作用と、それらをどのように制御および適用すべきかについての理解を深めようとしています。

次のフライトリストでは、条件を満たす各フライトのプロパティを設定したいと思います。

この式では、リストに副作用があります。私の限られた知識から、私は元のために知っています。「LINQはクエリにのみ使用されます」および「リストへの操作はわずかであり、値の割り当てまたは設定はそれらの1つではありません」および「リストは不変である必要があります」。

  • 上記のLINQステートメントの何が問題になっていますか?また、どのように変更する必要がありますか?
  • 上記のシナリオの基本的なパラダイムに関する詳細情報はどこで入手できますか?
0 投票する
5 に答える
202 参照

c++ - placement-new はシーケンス ポイントを導入しますか?

次のコード行を検討してください。

コンストラクターT()が例外をスローした場合、p既にインクリメントされていることが保証されますか?

0 投票する
2 に答える
990 参照

.net - F#でprintfn/IOを純粋にする

F#で機能が純粋なままであることを確認することについては、オンラインではあまり多くないようです。

例を作成するために、F#でprintfn / IOを純粋にする方法はありますか?

0 投票する
2 に答える
647 参照

python - 副作用のあるPythonクロージャ

Pythonのクロージャがその名前空間の変数を操作することは可能かどうか疑問に思っています。クロージャ自体の外部で状態が変更されているため、これを副作用と呼ぶ場合があります。こんなことしたい

明らかに私がやりたいことはもっと複雑ですが、この例は私が話していることを示しています。

0 投票する
2 に答える
4075 参照

java - 休止状態のエンティティを構築するときに双方向の関係を処理する方法は?

JPA/Hibernate を使用して、グループとアカウントの 2 つのエンティティ間の関係をモデル化したいと考えています。アカウントは複数のグループを持つことができますが、その逆はできないため、アカウントとグループの間には OneToMany の関係があります。Account私の同僚は、エンティティなどGroupをモデル化することを提案しました

私の質問はaddToAccount、のコンストラクターでのヘルパー メソッドの使用についてですGroup。私の同僚によると、この方法が必要なのは、2 つのエンティティの一貫したメモリ モデルを確保するために、2 つのエンティティ間の双方向の関係を両側から更新する必要があるからです。

addToAccountただし、コンストラクターでメソッドを呼び出すことはお勧めできません。

  1. ListofGroupは遅延フェッチされるため、メソッドを呼び出すには 開いaddToAccountているトランザクションが必要です。したがって、のコンストラクターは Group、開いているトランザクション内でのみ呼び出すことができます。私の意見では、これは非常に厄介な制限です。

  2. コンストラクターの引数として指定されたAccountオブジェクトは、コンストラクターGroupによって変更されます。私の意見では、これはコンストラクターの驚くべき副作用であり、Group 起こるべきではありません。

私の提案は、次のような単純なコンストラクターをより適切に使用することでした

双方向の関係を手動で処理します。しかし、多分私は間違っています。休止状態のエンティティを構築するときに双方向の関係を処理する一般的な方法はありますか?