問題タブ [trampolines]
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.
objective-c - 文字列を構築するための素敵な汎用 API を構築するには?
私たちのアプリでは、ボタンなどの UI 要素の画像を読み込む必要があることがよくあります。各画像には、横/縦、無効/有効、プッシュ/通常、さらには白/赤/グレーなどの色など、いくつかのバリエーションがあります。読み込みコードには、どのバリアントを読み込むかを指示するいくつかの変数があります。例として、次のサンプル ボタン クラスを見てください。
ここで、読み込みコードは、ボタンの種類に応じて、プロパティと loadbutton_white_pushed.png
などを確認する必要があります。button_red_landscape.png
コードは概念的には単純です (文字列の書式設定と[UIImage imageNamed:]
呼び出しのみ) が、同時に多くのノイズとボイラープレートがあります。
これを簡単にする単純なヘルパー クラスを考えてみました。クラスは、プロパティを結果の画像名にマッピングするルールを取得し、実際のプロパティ値を取得して、適切な画像を返します。何かのようなもの:
そして、私は次のように呼びます:
現時点では、追加された複雑さに見合う価値があるかどうかには関心がありません。API の設計と実装に関心があります。「記録」API は機能すると思いますが、「クエリ」API は機能しないため、呼び出しをチェーンしたり、画像をsetButtonStyle:
返しvoid
たりすることはできません。
この問題に有効な汎用 API のアイデアはありますか?
ios - JSON.NET:MonoTouchで動作しない「タイプ2のトランポリンが不足しています」
https://github.com/ayoung/Newtonsoft.JsonでJSON.NETとMonoTouchポートを試しましたが、次のシリアル化エラーが発生します。
RestSharp.Monotouchも試しましたが、同様のエラーが発生します。
c# - MonoTouch 6.0.8 リリース ノートの「ランタイム トランポリン」とは何を意味しますか?
MonoTouch 6.0.8 リリース ノートには次のように書かれています。
ランタイム トランポリン: Mono ランタイムでトランポリンを手動で管理する必要がなくなりました。トランポリンは動的に処理されるようになりました。
これは何を意味するのでしょうか?とにかくトランポリンをどのように手動で管理しますか?
おそらくトランポリンが不足することがわかっている場合でも、コンパイラ フラグを追加する必要がありますか?
return - return/redo が呼び出しコンテキストで結果関数を評価するのに、ブロックの結果が評価されないのはなぜですか?
return
昨夜、関数からの /redo オプションについて学びました。別の関数を返すことができます。この関数は呼び出し側で呼び出され、同じ位置からエバリュエーターを再度呼び出します。
foo
は 1 つの引数しかとらない関数ですが、2 つの引数を取る関数のように動作します。そうでなければ、呼び出し元が関数を返すことを知っている必要があり、その呼び出し元はそのdo
エバリュエーターを手動で使用する必要があります。
したがって、なしreturn/redo
では、次のようになります。
foo
1 つのパラメーターを消費し、値によって関数を返しました (呼び出されなかったため、インタープリターは先に進みました)。次に、式は 10 に評価されました。return/redo
存在しない場合は、次のように記述する必要があります。
これにより、呼び出し元は、実行する関数を返すことを選択したかどうかを知る (または気にする) 必要がなくなります。また、テール コールの最適化や、リターン機能自体のラッパーの作成などを実行できるため、優れています。return
以下は、メッセージを出力しますが、関数を終了して結果を提供するバリアントです。
しかし、 で動作するのは関数だけではありませんdo
。これが「コールサイトでの DO の必要性をなくす」ための一般的なパターンである場合、なぜこれは何も出力しないのでしょうか?
通常のリターンと同じように、ブロックを値で返しただけです。「テスト」を出力すべきではありませんか?do
それは...ええと、それで何をするかです:
javascript - 配列とオブジェクトの反復のための再帰上のトランポリン
おそらく「金曜日の 5:00 以降で、家に帰りたい」効果ですが、この問題に困惑しています。それぞれを呼び出す再帰的な反復子メソッドがあります。
これは、大規模なデータセットでは非常に遅くなります (以下で説明します)。@raganwald がここで説明しているように、トランポリンは問題の解決策です。. 私の質問は、この再帰関数をリファクタリングしてトランポリン手法を利用するにはどうすればよいですか?
したがって、ツリーの現在の状態を要求するポーリング メカニズムがあります。この場合は、次のようなロケーション ツリーです。
ツリーは、場所に属するもののグリッドでレンダリングされます。グリッド内の場所を持つ行ごとに、ルートをこの行の場所に設定してツリーをレンダリングする必要があります。したがって、次の場合:
したがって、これらの一部またはすべてがサーバー側で処理される可能性があることは気にしないでください。後でデータ フェッチのパフォーマンスを最適化します。
トランポリンまたはCPS スタイルを使用するように各メソッドを書き直す効率的な方法はありますか?
return - Lisp で関数から飛び出すにはどうすればよいですか?
(Common) Lispで別の関数を呼び出す代わりに別の関数にジャンプすることは可能ですか? つまり、現在の関数が壊れて別の関数が呼び出され、何千もの関数をジャンプバックせずに、末尾でなくても末尾呼び出しの最適化が行われているかどうかを自分で決めるかのように。"(return-from fn x)" が必要かどうかはわかりません。
例:
「ジャンプ」は、スタック オーバーフローが発生しないように、この関数の位置を保存せずに、元の funcall があった場所に戻る代わりに、次の関数を呼び出すようなものでなければなりません。'rest' は、x が nil の場合にのみ実行する必要があります。
box2d - このトランポリン/輪ゴム オブジェクトを box2d で調整するにはどうすればよいですか?
box2d と cocos2d を使用して、このトランポリン/輪ゴムを作成しようとしています。期待した効果が得られないことを除けば、頭の中ですべてうまくいくはずです。私のトランポリンはこんな感じです。
- 緑のオブジェクトと青のオブジェクトは静的です
- 赤い点は、次のパラメーターを持つオブジェクト間の distanceJoints を表します。
周波数 = 10.0 減衰比 = 0.1
- 茶色のオブジェクトには次のプロパティがあります。
摩擦 = 0.0 反発 = 0.3 密度 = 20.0
- 青いオブジェクトは静的オブジェクトです
- 緑の線は、次のプロパティを持つ distanceJoints を表します。
周波数 = 4.0 減衰比 = 0.5
- トランポリンにドロップされたオブジェクトのプロパティは次のとおりです。
フィクション = 0.0 反発 = 0.5 密度 = 100.0
オブジェクトをトランポリンに落としたときにこの構成を使用して得られる効果は、マットレス ドロップ効果に近いものです。
私の質問は次のとおりです。
これは良いアプローチですか?このトランポリンを微調整して、トランポリンのように動作させ、マットレスのように動作させないようにするにはどうすればよいですか?
#1 に回答したら、青色のダミー/ゴースト オブジェクトを衝突に応答させないようにするにはどうすればよいでしょうか。したがって、ユーザーに関する限り、非表示/非存在にできますか?
ありがとう!
javascript - トランポリン、再帰、遅延評価
JavaScript で基本的な遅延シーケンスを実装しようとしています。私は閉鎖と継続のみを使用しています。これは私がこれまでに得たものです:
質問とは直接関係ないので、カレー関数は投稿しませんでした。
今、取引ブレーカーはfilter
です。正規の実装は末尾再帰です。
シーケンスで何度も実行すると、スタックは最終的に爆発します:
一般的な回避策はトランポリンを使用することであり、熱心な世界では比較的簡単ですが、怠惰なシーケンスに実装するのは困難なようです。Schemeで複雑な解決策を見つけましたが、そのまま JavaScript で実装することをあきらめました。
これは見た目ほど複雑ですか?おそらく反復で、この問題を解決する別の方法はありますか?健全な方法でスキーム コードを JavaScript に移植するためのヒントはありますか?