問題タブ [rebol3]
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.
undefined - 値はどうですか?機能作業?
呼び出された変数class-name
に値が割り当てられているかどうかをテストする、いくつかのコードを小さな例にまとめました。
ここでは、式value? 'class-name
は false を返します。一方、欠落しているブランチに割り当てを入力すると、次のようになります。
これは に対して true を返しますvalue? 'class-name
。しかし、この 2 番目のケースでclass-name: default-class-name
は、まだ実行されていません。
value? 'class-name
class-name はメモリに存在してはならないので、 false を返す必要があると思います。value?
代わりに true を返すのはなぜですか?
scope - 組み込みのFUNCTIONとFUNCSアドオンの違いは何ですか?
Rebol 3にはFUNCTIONの新しい実装があり、デフォルトで変数をローカルコンテキストに自動的にバインドできます。
FUNCTIONにVALUEに問題があるようです。実行時に変数がまだ設定されていない場合でもTRUEを返すため、テストします。
FOOに電話すると、次のようになります。
これはFUNCの動作方法ではありません(割り当て後にBARに値があるとだけ表示されます)。ただし、FUNCは変数を自動的にローカルにしません。
ここで、LadislavMecirによって作成されたライブラリでFUNCSプリミティブを見つけました。それはどのように異なり、同じ欠点がありますか?
scope - ローカル変数変数が尊重されないのはなぜですか?
このコードスニペットでfields-types
は、最終的に関数によって変更されto-camel-case
ますが、ローカル変数として親関数に渡されます。
実行すると:
私はそのフィールドタイプを不変のままにしておきたいのですが:
もちろんto-camel-case
、名前のコピーを使用するように変更することでこれを回避することもできますが、それは私がしなければならないと思うことではありません。
Scalaにvar
andキーワードのようなものはありますか?val
rebol - 引用符で囲まれた引数を REBOL 3 スクリプトに渡す
引用符で囲まれた引数 (スペースを含む) を REBOL 3 スクリプトに渡すことはほとんど不可能であることがわかりました。例えば:
調べるsystem/script/args
と、文字列が含まれています"foo bar 40"
。これはだめだ!情報が失われました。"foo bar"
それが最初の引数であり、2 番目の引数であることを知る必要があり40
ます。を調べるsystem/options/args
と、次のブロックが得られます: ["foo" "bar" "40"]
. 繰り返しますが、役に立たない!情報が失われました。
これに対する解決策は、ある種の引数区切り文字を使用することだと思います。
これは で簡単に処理できますがPARSE
、それでも気に入りません。system/options/args
渡された引数ごとに 1 つの文字列を含めることはそれほど難しくありません。
REBOL は使うのが楽しくて、これは私が本当にがっかりした最初のことです。:(
rebol - 文字列名を使用してオブジェクト関数を呼び出す方法
以下が機能しない理由は何ですか?(R3)
cgi - Rebol 3で「Hello、World」CGIを作成するにはどうすればよいですか?
簡単なことから始めましょう。エコーされるフィールドを持つフォームです。
map - MAP のメンバーシップをテストする一般的な方法! Rebol 2 と 3 の両方で作業していますか?
Rebol 2 には HASH がありました。タイプだけでなくMAP!タイプ。どちらも FIND 関数と SELECT 関数、およびパスベースの選択でサポートされていました。
キーがマップにないことを検出するには、FIND を使用して NONE に対してテストできます。
ただし、この場合、パスベースの選択ではエラーが発生します。
一方、Rebol 3 には MAP! しかありません。ただし、FINDと SELECTはシリーズ タイプと MAP のみをサポートします。もはやシリーズとは見なされません。マップを操作する唯一の方法 (?) は、非メンバーシップの場合にエラーをスローしないパス選択によるものです。
...そして、キーが変数 (または文字列) にある場合は、PAREN を使用する必要があります!
これは Rebol 2 でも機能しますが、存在しないものを要求したときに NONE を返す代わりにエラーをスローするという同じ警告があります。
したがって、これが正しいとすれば、パス選択は Rebol 2 および 3 のキーから値を取得する「一般的な」方法です。それにもかかわらず、メンバーシップの欠如をテストする一般的な方法は見当たりません。これをどのように処理しますか?
parsing - 解析でSOMEをCHANGEと混合した場合のRebol2とRebol3の違い
単語を含むブロックのブロックの単純化された例を想像してみてください。
各ブロックはである必要があります[c c c c]
。したがって、値が、の場合、値は'a
に変更され'b
ます。値がの場合は'b
、に変更され'c
ます。値がの場合、'c
「C」を出力して次に進みます。
Rebol 2では、これは期待どおりに機能します。
しかし、Rebol 3には問題があるようです(バグ?):
それが関連しているかどうかはわかりませんが、Rebol2とRebol3の間で解析する変更のリストを含むRebolWikibookには次のように書かれています。
いくつかのサブルール-R3での不要な無限ループを防ぐために、このルールは、サブルールが入力と一致するがそれを進めない場合にも停止します
(注:StackOverflowチャットで@rgchrisによって提供されたこの簡略化された例は、 「組織の知識」をより適切に保持し、更新を許可するためにここで繰り返されます。)
rebol - Rebol 3のコーデックをどのように記述しますか?
Rebol2用のJSONエンコーダー/デコーダーを作成しました。私はそれをRebol3用に書き直しており、コーデックとしてRebol3で利用できるようにしたいと思っています。
これについてはどうすればよいですか?
質問の時点では、この主題に関する文書はほとんどありません。
unicode - どうすればシングルバイトとバイナリで作業できますか! Rebol 3のバイト配列?
Rebol 2 では、to char!
追加などのバイナリの操作で使用できる、実質的に 1 バイトのものを生成するために使用できます。
理にかなっているようです。しかし、Rebol 3 では、何か違うことがわかります。
これは、単一文字を単一バイトとしてモデル化しないためです (Unicode のため)。したがって、(255) の整数値はfirst data
2 バイトのシーケンスに変換されます。
そのCHARを考えると!は Rebol 3 のバイトと同等ではなくなり、BYTE もありません! datatype が追加されました(BINARY! は、STRING! が一連の CHAR! であるのと同じように、一連の BYTE!s と見なすことができるように)、この種の状況についてはどうすればよいでしょうか?