問題タブ [syntactic-sugar]

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 に答える
346 参照

scheme - スキームでは、ブール演算子の組み合わせとして表現できますか?

andor、およびを表現するのは簡単notですif( のローカル バインディングの助けを借りてor)。逆が本当かどうか知りたいです。私の素朴な最初の試み:

ただし、testが non-#fであり、conseqisである場合#f、翻訳は と評価されますがaltern、これは正しくありません。

の短絡の性質を維持しながら、正しい値に評価される変換はありifますか?

0 投票する
4 に答える
184 参照

c# - 値のシーケンスが正しく順序付けられているかどうかを確認するにはどうすればよいですか?

Actionプロパティを持つオブジェクトがたくさんありますlong Timestamp。私はこのようなことをしたい:

残念ながら、この構文は違法です。これを実行するための組み込みの方法またはextension\LINQ \ whateverの方法はありますか?

ユニットテストクラスのターゲットであることに注意してください。パフォーマンスや読みやすさなどは気にしません。

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

scala - Scala の割り当てと setter メソッドについて

編集: この質問の原因となったバグは修正されました。


Scala リファレンスで、私は読むことができます (p. 86):

単純変数 x = e への割り当ての解釈は、x の定義によって異なります。x が変更可能な変数を表す場合、代入によって x の現在の値が式 e の評価結果に変更されます。e の型は x の型に適合することが期待されます。x が何らかのテンプレートで定義されたパラメーターなしの関数であり、同じテンプレートにセッター関数 x_= がメンバーとして含まれている場合、代入 x = e はそのセッター関数の呼び出し x_=(e) として解釈されます。同様に、パラメーターなしの関数 x への代入 f .x = e は、呼び出し f.x_=(e) として解釈されます。

したがって、たとえば、次のようなものがうまく機能します。

私はそれから書くことができます

しかし、このようにクラスを定義すると、型パラメーターをメソッド a に追加します。

その後、それは機能しなくなります。error: reassignment to valと書くと が得られますa.a = 10。面白いことに、たとえば、型パラメーターがなくても暗黙的なパラメーター リストが使用されても機能します。

おそらく、この例では、型パラメーターはあまり役に立ちませんが、DSL の設計では、getter に型パラメーターがある場合でも、setter メソッドが呼び出されると便利です (ちなみに、setter に型パラメーターを追加します)。許可され、正常に動作します)。

だから私は3つの質問があります:

  1. 回避策はありますか?
  2. 現在の動作はバグと見なす必要がありますか?
  3. コンパイラが getter メソッドを強制して setter に構文糖衣を使用できるようにするのはなぜですか?

アップデート

これが私が本当にやろうとしていることです。かなり長いです。申し訳ありませんが、避けるつもりでしたが、省略した方が混乱を招くことに気付きました。

私は Scala で SWT を使用して GUI を設計しており、Dave Orme のXScalaWTを使用して非常に楽しんでいます。これにより、必要なコードの量が大幅に削減されます。Composite°C を °F 度に変換する SWT の作成方法に関する彼のブログ投稿の例を次に示します。

ウィジェットを構築する各メソッドの引数は type(WidgetType => Any)*であり、いくつかの便利な暗黙の変換があります。これにより、たとえば、setText()メソッドを持つウィジェットの文字列を直接指定できます。すべてのコンストラクター関数は、シングルトン オブジェクトからインポートされます。

最後に、次の行に沿って何かを書きたいと思います。

これにより、テキストフィールドの編集可能なプロパティが、WritableValue 変数を介してチェックボックスの選択にバインドされます。

まず、名前付き引数はここでは適用できないため、行editable = falseはどこかから来ている必要があります。したがって、シングルトン オブジェクトのウィジェット構築メソッドに沿って、概念的には次のように記述できます。

...しかし、これはゲッターも存在する場合にのみ機能します。すばらしい: <=> でデータバインディングを実装するには、とにかくゲッターが必要です。このようなもの:

これが機能すれば、BindingMaker で <=> を定義でき、この優れた構文を使用できるため、人生はうまくいくでしょう。しかし残念なことに、ゲッターの型パラメーターはセッターを壊します。したがって、私の最初の質問: この単純な型パラメーターが、コンパイラーがセッターを呼び出すための構文糖衣を使用するかどうかに影響するのはなぜですか?

これで少しわかりやすくなったと思います。読んでくれてありがとう…</p>

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

python - Python:locals()を使用して辞書の値を出力する

Pythonで最も優れたツールの1つはlocals()、文字列フォーマットです。

ただし、これはディクショナリ値では実行できません。

これを機能させる方法はありますか?

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

c# - ラムダ式の構文糖衣?

次のコード(.NET 3.5)に出くわしました。これは、コンパイルする必要があるようには見えませんが、コンパイルでき、正常に動作します。

Table.IsChildOfは、実際には次のシグネチャを持つメソッドです。

これは次のことと同等だと思いますか?

もしそうなら、これの適切な用語は何ですか?

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

javascript - 暗黙のグローバルを防ぐための構文糖衣としてvoidを使用しますか?

私はJavaScriptプログラミングスタイルについて考えていましたが、暗黙のグローバルを使用するという簡単に犯される間違いを防ぐために、構文糖衣構文を少し追加するのが理にかなっているのではないかと考えていました。

この例では、counterは突然グローバル変数になり、のインスタンスにローカルスコープされる変数になりますOuterFunction

クロージャでキャプチャされた変数を「宣言」することで、割り当てvoidに使用する他のコードと同様に、自由なアサーションを取得できます。 counter

編集jleedevが指摘したように、変数名自体を使用するだけで、変数名が存在するかどうかをテストするようです。

同様に機能します。

私が見る利点は次のとおりです。

  • 書くのは短いです。
  • ある程度、変数宣言のように見えます。
  • 追加のために編集:一貫して行われると、構文チェッカー(肉またはプログラム)がこの種のエラーを見つけるのが非常に簡単になります。

一方で:

  • ややこしい。コードは実際には何もしませ
  • 将来の通訳者は、それを無意味で副作用のないコードとして見つけ、最適化する可能性があります。

私が見落としている側面はありますか?これはばかげた考えですか、それとも少なくともある程度防御可能ですか?

質問者の編集:これはコミュニティWikiの質問である必要がありますが、それに変更するためのチェックボックスが表示されません。ぼんやりと覚えています。

壮大な愚かさのために編集:もちろん、+=インクリメントする前に式の値を取得しようとします。そのため、少し意味があるように、例の名前をresetCounterではなくに変更しました。incrementCounter

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

php - 複数行の if ステートメントに代わるものはありますか?

複数行の if ステートメントを読みやすく、見やすくするための代替パターンはありますか? 何かのようなもの:

0 投票する
4 に答える
25517 参照

layout - Haskellレコード構文

Haskellのレコード構文は、その醜い構文と名前空間の汚染のために、他の点ではエレガントな言語に対するいぼであると多くの人に考えられています。一方で、ポジションベースの代替手段よりも便利なことがよくあります。

このような宣言の代わりに:

これらの線に沿った何かがより魅力的であるように私には思えます:

私が見逃しているのには十分な理由があるはずですが、なぜCのようなレコード構文がよりクリーンなレイアウトベースのアプローチに採用されたのでしょうか。

第二に、名前空間の問題を解決するためのパイプラインに何かがあるので、Haskellの将来のバージョンのid foo代わりに書くことができますか?fooID foo(現在利用可能な長蛇の型クラスベースの回避策は別として。)

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

haskell - Haskell で独自の構文シュガー (do 記法や矢印記法など) を展開することは可能ですか?

さて、質問は自明です。楽しみのためだけに特別な構文を実装したいとします。出来ますか?どのツールを使用すればよいですか?

0 投票する
9 に答える
6099 参照

c# - C# で値を返さずにメソッドが成功または失敗したことを示すにはどうすればよいですか?

C/C++ などの他の言語では、メソッドが正常に返されたか失敗したかを呼び出し元のメソッドに示す SUCCESS のような値を返すことを知っています。

SUCCESS 戻り変数を必要とせずに C# でこれを行う「良い」方法はありますか? 例外をスローすることが頭に浮かびますが、これをどのように実装するかはわかりません。独自のエラー メッセージでスローできるカスタム例外はありますか?

サンプルコードは大歓迎です。

前もって感謝します。