問題タブ [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 投票する
7 に答える
7864 参照

python - Python assert -- 失敗の改善されたイントロスペクション?

これはかなり役に立たないアサーション エラーです。関連する式の値はわかりません (使用される定数は実際には変数名であると仮定します)。

assertより派手なPythonでのより良い実装はありますか? -O実行時に追加のオーバーヘッドを導入してはならず (アサートが失敗した場合を除く)、フラグが使用されている場合はオフにする必要があります。

編集: assert の 2 番目の引数が文字列であることは知っています。.. は、アサートされている式にエンコードされているため、書きたくありません。DRY (繰り返さないでください)。

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

language-agnostic - シンタックス シュガー vs. 機能

C# (および Java) では、文字列は格納された長さといくつかのメソッドが追加された char 配列にすぎません。同様に、(参照と値は別として) オブジェクトは、継承とインターフェイスが追加された美化された構造体にすぎません。

あるレベルでは、これらの追加はそれ自体が明確な機能と機能強化のように感じます。別のレベルでは、「シンタックス シュガー」の状態からわずかにアップグレードしたように感じます。

この考えをさらに進めるために、次のことを考えてみてください (詳細が間違っているかもしれませんが、要点は変わりません)。

多くの場合、単一の抽象化レイヤーはシンタックス シュガーのように見えますが、分離された複数のレイヤーは互いに非常に離れているように感じます。

何かがシンタックス シュガーではなくなり、正真正銘の機能になり始めたとき、どうすればわかりますか?

0 投票する
8 に答える
27155 参照

java - JavaのWITHステートメント

VB.NETには、オブジェクト名を省略して、必要なメソッドとプロパティにのみアクセスできるWITHコマンドがあります。例えば:

Java内にそのような構文はありますか?

ありがとう!

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

php - PHPのarray()の略語

あなたのことはわかりませんが、PHPで配列を作成する方法はあまり好きではありません。array私は、キーワードを頻繁に使用しすぎていると感じています。また、マップの有用性を考えると、長array($k => $v)すぎると感じています。(さらに、最近JSのやり方をarray($k1=>array($k2=>$v))学び、今は本当に嫉妬しています)

これを改善するために私が思いつくことができる最善の方法は次のとおりです。

=>...ただし、演​​算子の使用は許可されていません。

他のアイデアはありますか?

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

c# - 属性で装飾されたメソッドに配管コードを注入/生成する方法は?

キャッシングとメモ化に関するいくつかの記事と、デリゲートとジェネリックを使用して簡単に実装する方法を読んでいました。構文は非常に単純で、実装は驚くほど簡単ですが、繰り返しの性質があるため、同じ配管コードを何度も作成する代わりに、属性に基づいてコードを生成できるはずだと感じています。

デフォルトの例から始めたとしましょう:

そして、これをメモするために:

メモ化拡張メソッドの1つに一致するタグ付きメソッドが見つかったら、このコードを吐き出すコードジェネレーターを作成する方が簡単ではないかと思いました。したがって、この配管コードを記述する代わりに、属性を追加するだけで済みます。

正直なところ、これは実際のコード生成よりもプリプロセッサによって変換されるコンパイラシュガーのように見えることを私は知っていますが、私の質問は次のとおりです。

  1. 特定の属性を持つac#ソースファイル内のメソッドを見つけ、parametertypesとreturntypeを解析し、このフィンガープリントに一致するデリゲートを生成するための最良の方法は何だと思いますか
  2. 実際にコードを上書きせずに、これをビルドプロセスに統合するための最良の方法は何でしょうか。コンパイラに渡す前に、ソースファイルに対していくつかの前処理を行うことは可能ですか?

ありとあらゆるアイデアをありがとう。

更新

Shayが提案したように、Postsharpライブラリを調べましたが、トランザクション管理、トレース、セキュリティなどのタイムクリティカルではないアプリケーションでの作業に非常に適しているようでした。

ただし、タイムクリティカルなコンテキストで使用すると、デリゲートよりもかなり遅いことがわかりました。実装ごとにフィボナッチの例を100万回繰り返すと、実行時間が80倍遅くなりました。(0.012msポストシャープvs 0.00015msデリゲート/コール)

しかし、正直なところ、私がそれを使用するつもりの文脈では、結果は完全に受け入れられます。回答ありがとうございます!

Update2

どうやらPostsharpの作者はリリース2.0に一生懸命取り組んでおり、これにはとりわけ、生成されたコードのパフォーマンスの向上とコンパイル時間が含まれます。

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

scala - Scala でコンパイル時にオブジェクトを作成するためのシンタックス シュガー

私が持っているとしましょう

ユーザーが fooFn の独自の定義済み本体を使用して、fooTrait の新しいインスタンスをすばやく宣言できるようにしたいと考えています。理想的には、次のようなものが欲しい

仕事に。しかし、私はただすることはできません

これはクロージャーを使用するため、プログラムが複数回実行されると異なるオブジェクトが生成されるためです。私が本当に必要としているのは、newFoo によって返されたオブジェクトの classOf を取得し、それを別のマシンで構築できるようにすることです。私は何をしますか?

ユースケースに興味がある場合は、Hadoop 用の Scala ラッパーを作成して実行できるようにしようとしています。

中間のものは、特定のインターフェイスを実装するクラスに変換する必要があり、クラス名だけから別のマシン (同じ jar ファイルを実行) でインスタンス化できます。

Scala は、(x:Int) => x+5 を Function1 のインスタンスに変換するシンタックス シュガーを使用して正しいことを行うことに注意してください。私の質問は、Scala 内部をハッキングせずにこれを複製できるかどうかです。これが Lisp である場合 (私が慣れているように)、これは簡単なコンパイル時マクロになります ... :sniff:

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

sql-server - SQL: v1 と v2 の間

SQL Server の BETWEEN クエリで v1 と v2 の順序に違いはありますか?

現在、v1 が v2 より大きい場合、結果は得られません。これは唯一の構文糖衣ですか

または、実際に2つの間のすべての値を取りますか? 私の現在の観察では、それが最初のケースだと思います。

0 投票する
13 に答える
7061 参照

c# - C#はどれくらい役に立ちますか?オペレーター?

だから私は??に興味をそそられました オペレーターですが、まだ使用できていません。私は通常、次のようなことをしているときにそれについて考えます。

someObjectが有効で、someMemberがnullの場合、次のことができます。

しかし、someObjectがnullの場合、ほとんどの場合、問題が発生します。自分でヌルチェックを行うよりも、これをクリーンにするのに役立ちません。

皆さんはどのような用途を見つけましたか?実際の状況では?

0 投票する
5 に答える
1042 参照

javascript - Python の __setitem__ に相当する JavaScript

JavaScript には __setitem__ がなく、この例は明らかに機能しません。

Python __setitem__ では、次のように機能します。

JavaScript で __setitem__ 動作を実装することは可能ですか? すべてのトリッキーな回避策が役立ちます。

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

javascript - ブレンダン・アイクがJavaScriptに砂糖とマクロを追加することについて話すとき、それはどういう意味ですか?

私は現在、Coders at Workを読んでおり、BrendanEichにインタビューしている章にいます。控えめに言っても、前の章に比べて少し密度が高いです。144ページあたりで、彼はJavaScriptに砂糖とマクロを追加することについて話します。これらの用語はどういう意味ですか?それらを追加することに反発するのはなぜですか?