問題タブ [void-safety]
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.
class - Eiffel のクラス属性
いくつかの属性と関数で構成される、Eiffel でクラスを作成しようとしています。属性が setName に表示されないか、正しく初期化されないという問題が発生し続けています。コンパイラ エラー: VEVI: 変数が正しく設定されていません。属性: 名前。APPLICATION で TESTER オブジェクトをインスタンス化し、これらのメソッドを呼び出せるようにしたいと考えています。
null - Eiffel はすべての null を回避しますか?
私は実際に C# を使用していますが、Nulls に関する問題について、地元の開発者グループ (Chester Devs、英国) のソーシャル サイトで Nulls の問題が取り上げられました。
オブジェクト Person には Name などの String 型のプロパティがあります 名前が不明な場合、C# では Name は null です
Eiffel には、この一般的な動的 void を処理する C# ( x が null の場合 ...) よりも優れた方法がありますか?
void - エッフェルの添付ステートメントのローカル変数のポイントは何ですか?
Eiffel では、Void Safety は、初期化されていない (「null」) オブジェクトの逆参照を静的に防止する方法です。それが機能する方法は、最初にオブジェクトをdetachableとして宣言する必要があり、次に、オブジェクトを使用する前に、オブジェクトが実際にアタッチされている (つまり、何らかの値がある)かどうかを if ブロックで確認する必要があります。
これは私が今までそれを使用してきた方法です:
完全に正常に動作します。アタッチされたチェックがないと、コンパイルは「Object_call のターゲットが void である可能性があります」というエラーで失敗します。しかし、 Void Safetyに関するドキュメントを実際に読んだ後、これが実際には次のようになっていることがわかりました。
この形式では、と同じオブジェクトを指しているが非 void であることが静的に保証されている if ブロックにローカルl_some_object
な変数です。some_object
しかし、この as-clause が存在する理由がわかりません。上で指摘したように、どうやらオリジナルsome_object
はすでに if ブロック内で非 void であることが静的に保証されているようですが、別の変数を導入する意味は何ですか?
スコープ以外のsome_object
との違いは何ですか?l_some_object
javascript - TS で undefined を void にキャストしても問題ありませんか?
TLDR;
これでよろしいですか?それとも悪い習慣ですか?
環境
undefined
TypeScript には、何かまたはまたはのいずれかを返すことができる関数がありますvoid
。
変更されたペイロードを返すことができるイベント ハンドラーのようなもの、または開発者がペイロードを変更しない場合に備えて、何も返さないか未定義を返すことを選択できます。
次に、void または undefined 以外を返すかどうかを確認する必要がある型チェッカーがあります。
result !== undefined
ただし、上記のスニペットは、まだ可能であるにもかかわらず、エラーが発生するのvoid
でしょうか?
私の意見ではvoid
、 と同じでなければならないので、それは独特だと思いますundefined
。
だから私はそれを解決するこの型チェッカーを作りました:
これで問題は解決しますが、私の質問は次のとおりです。
これでよろしいですか?それとも悪い習慣ですか?