問題タブ [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.
side-effects - 評価順序が左から右の言語のシーケンスポイント?
評価順序が「左から右」として指定され、言語が(疑似)Cのようなものである場合、次の例のシーケンスポイントはどれですか。
python - 副作用のあるゲッター
オブジェクトが一連のXMLコードで初期化されるクラスを作成します。このクラスには、そのXMLからさまざまなパラメーターを抽出し、それらをオブジェクト状態変数内にキャッシュする機能があります。これらのパラメータの潜在的な量は多く、おそらくユーザーはそれらのほとんどを必要としないでしょう。そのため、「遅延」初期化を実行することにしました。
次のテストケースでは、そのようなパラメータはtitle
です。ユーザーが初めてアクセスしようとすると、getter関数はXMLを解析し、状態変数を適切に初期化して、その値を返します。
これは見栄えがよく、私にとってはうまく機能します。ただし、getter関数は、オブジェクトに非常に重大な副作用があるという意味で、実際には「セッター」関数であるという事実に少し不安を感じています。これは正当な懸念ですか?もしそうなら、私はそれにどのように対処すべきですか?
c++ - オブジェクトへの割り当て
次のテクニックの合理的な説明はありますか:
これの代わりに:
またはこれ:
また、最初のコード スニペットが (一般的に) 悪いプログラミング手法の例であることに同意しますか?
go - Go 言語の副作用
Go言語で副作用のある関数を書く方法を知っている人はいますか? getchar
私はCの関数のように意味します。
ありがとう!
language-agnostic - 純度と参照透過性
用語の定義は異なっているように見えます が、私は常に一方が他方を意味すると考えてきました。式が参照透過性であるが純粋ではない場合、またはその逆の場合は考えられません。
ウィキペディアは、これらの概念について個別の記事を維持しており、次のように述べています。
参照透過性から:
式に含まれるすべての関数が純粋関数である場合、式は参照透過性です。また、一部の不純な関数は、それらの値が破棄され、それらの副作用が重要でない場合、式に含めることができます。
純粋な表現から:
純粋式を構築するには純粋関数が必要です。[...]純粋な表現は、参照透過性と呼ばれることがよくあります。
これらのステートメントは紛らわしいと思います。いわゆる「不純な関数」による副作用が、プログラムを大幅に変更せずに実行できない(つまり、そのような関数の呼び出しをその値に置き換える)ほど重要でない場合、それは、そもそもね。
純粋な式と参照透過性の式の違いを理解するためのより簡単な方法はありますか?違いがある場合は、それを明確に示す式の例をいただければ幸いです。
c++ - C++ コンパイラは const bool & value が変更されないと想定できますか?
C++ コンパイラは、「const bool &」の値が変更されないと想定できますか?
たとえば、次のクラスがあるとします。
そして、私はそれを次のように使用します:
_test の値が変更されないとコンパイラが想定することは、標準で許可されていますか。
私はそうは思いませんが、ただ確信したいだけです。
xml - Powershell を使用した外科的 XML 編集
プロジェクト参照の大規模な編集を行うために、Powershell を使用して csproj ファイルを操作しています。これまでのところ、次の行を使用して ProjectReferences の Include 属性を編集できました。
これは機能し、期待どおりに適切な ProjectReferences の Include 属性を置き換えます。ただし、すべてのタグを独自の行にフォーマットするなど、追加の「無害な」変更がたくさんあります。
<FileUpgradeFlags></FileUpgradeFlags>
になる
<FileUpgradeFlags>
</FileUpgradeFlags>
このような副作用のない編集を実行する方法はありますか?
編集: 他の理由でこの投稿を見つけた人にわかりやすくするために、Select-MsBuildXml は、名前空間パラメーターを msbuild 名前空間で事前に読み込み、後でノード プロパティを展開する Select-Xml の周りに書いた単なるラッパー関数です。
perl - Data :: Dumper()の副作用とは何ですか?
コメントアウトするとDumper($cmd_string)
、while
ループは発生しません。
Dumper()は$ cmd_stringにどのような副作用がありますか?
サブ呼び出しの前の$cmd_stringは次のとおりです。
Dumper()を使用せずにPerlデバッガーを実行し、$ cmd_stringでxコマンドを使用すると機能しますが、コードをステップ実行するだけでは機能しません。
これは、サブの最後にあるコードをステップスルーした後です
ここで、forループの前に$ cmd_stringをxすると、subの最後にこれが表示されます。
c++ - RapidXML /C++クラスポインタの副作用による解析での再帰の問題
C ++でのXML解析にRapidXMLを使用しようとしたときに、最近遭遇したこの奇妙で興味深い状況を共有したいと思います。
特定のノードの子の中から特定のノードを検索して返す再帰関数を作成したかったのです。私の最初の試みは:
たまたま最初の子でのみ正しく機能しましたが、XMLファイルのより深いところにネストされているノードを検索すると、ノードが見つかります(coutが表示されます)が、returnステートメントの後にforサイクルが1つ実行されているようです(またはいくつか)より多くの時間(おそらく再帰の呼び出しスタックのため)、それから終了し、ポインタが失われます。
だから私は一時変数でそれを修正しようとしました、このように:
しかし、何も変わりませんでした。
残念ながら、RapidXMLのノードはクラスポインタであるため、この状況では、副作用により正しい結果を引き出すことができません。
誰かがこの状況を発見したか、または別の方法でこの問題を解決しましたか?
java - toStringの副作用はJavaデバッグに適用されますか?
EclipseでJavaコードをデバッグするときに、変数名の1つをクリックすると、そのオブジェクトが出力されます。オブジェクトのtoString()メソッドを使用してオブジェクトを出力します。いくつかのtoStringメソッドに副作用があり、そのタイプの変数をクリックした場合、そのtoStringの副作用が適用されますか(そして間違いなくすべてを台無しにします)?