問題タブ [loose-typing]

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 投票する
4 に答える
396 参照

php - PHPの強い入力とwhileループの比較

次のコードスニペットがあるとします。

結果は次のようになります。

ただし、出力もしたいのですNumber: 0が、whileループはであると評価0されるfalseため、ループがそのポイントに到達することはありません。明示的にのみループを終了させるにはどうすればよいfalseですか?

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

java - 実行時の型解決に関する Java のベスト プラクティス

緩く型付けされたオブジェクト (JavaScript など) として動作するクラス (または同じインターフェイスを実装するクラスのセット) を定義しようとしています。それらはあらゆる種類のデータを保持でき、それらに対する操作は基になる型に依存します。

私はそれを 3 つの異なる方法で動作させていますが、理想的な方法はありません。これらのテスト バージョンでは、文字列と整数のみが許可され、唯一の操作は追加です。整数を追加すると整数値の合計になり、文字列を追加すると文字列が連結され、整数を文字列に追加すると整数が文字列に変換され、文字列と連結されます。最終バージョンには、より多くの型 (Double、Array、新しいプロパティを動的に追加できる JavaScript のようなオブジェクト) とより多くの操作が含まれます。

方法 1:

...DynString1 についても同様

方法 2: public interface DynObject2 { @Override public String toString(); public DynObject2 add(DynObject2 d); }

...DynString2 についても同様

方法 3:

if-else ロジックを使用すると、型を格納する代わりに value.getClass()==Integer.class を使用できますが、より多くの型を使用すると、これを変更して switch ステートメントを使用し、Java では switch でクラスを使用できません。

とにかく...私の質問は、これを行うための最良の方法は何ですか?

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

asp.net - ASP.Net 層状通信

階層化された Web アプリケーションを開発しています。仕様:

  • 3層、データ層、ビジネス層、UI層。
  • C# でプログラミング
  • データレイヤーはエンティティ フレームワークを使用します

IEnumerable<T>現在、linq 2 エンティティを介してデータ レイヤーをビジネス レイヤーに返すことを計画しており、ビジネス レイヤーはデータを UI レイヤーに返します。

ui レイヤーはデータ レイヤーの存在を認識していないため、T がデータ レイヤーで定義されている BLL から渡された IEnumerable の結果をどのように処理しますか?

これを行う方法に関する良い例はありますか。私はファクトリ/インターフェース/レイヤーを疎結合するための抽象化に非常に慣れていないことに注意してください。

ntier アプリケーションでデータを渡すという質問をここで見ました。エンティティ レイヤーをすべてのレイヤーで共有することをお勧めしますが、他のレイヤーがデータベースにクエリを実行できるようにしたくありません。

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

php - PHP: PHP は緩い型/動的言語なのでコード チェッカー?

サイズが適度に大きくなり始めている小さな PHP Web ベースのアプリケーションがあります。

PHP緩い/弱い型付けの動的言語であるため、PHP コード ベースの管理に関心を持ち始めています。

他の人は、ゆるい/弱い型付けの動的言語に基づいてコードをどのように管理していますか?

コードベースでチェックを実行して、以下のようなものを識別することができる PHP 用のプリパーサーはありますか?

更新

上記の例は最良の例ではないかもしれませんが、本質的に伝えようとしているのは、動的に弱い型付けされた言語の特定のエラーは、コードが本番環境で RUN TIME に実行されたときにのみ見つかるということです。一方、これらの問題のいくつかは、通常、COMPILE 時に強く型付けされた静的言語で発見されます。

非常識な数の単体テストを作成することなく、コードを本番環境に移行する前に、PHP でこれらの非アルゴリズム タイプのエラーを見つけるにはどうすればよいでしょうか?

そのため、本番環境に移行する前に PHP コードを実行できる場所はありますか? このプリプロセッサはコードを解析して、定義済みの変数のみを使用していることを確認します。非アルゴリズムタイプの使用。たとえば、文字列に対して代数を実行しようとしないなど。

更新 2

ランタイムではなく「コンパイル」タイプでPHPのこれらのタイプの非アルゴリズムエラーを特定する方法を探しているため、この質問にはまだ回答がないことに注意してください。

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

objective-c - メソッドをオーバーライドするときの厳密な型付けと緩い型付け

「ObjectiveCでのプログラミング」の例からAddressCardというクラスがあり、isEqual:メソッドを実装しています。

NSObjectのこのメソッドのシグネチャは、パラメータに緩い型を使用します。

OTOH、本のサンプルコードは厳密な型付けを使用しています。

この場合、コンパイラが何をするのか完全には理解できません。[aCard isEqual: @"Foo"]ランタイムエラー(システムが私のメソッドを使用している場合)またはシステムがNSObjectのバージョンのIsEqualを呼び出すことを期待して、AddressCardをNSString()と比較してみました。

代わりに、私のメソッドが呼び出され(パラメーターがアドレスカードではなくNSStringであったとしても)、IsEqual:がAddressCardに固有のメソッドを呼び出そうとしたときに例外が発生しました。

どうしたの?NSStringは、他の何かを期待するメソッドにどのように渡されますか?メソッドをオーバーライドするときに、メソッドのシグネチャを変更しても大丈夫ですか?

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

javascript - 動的 Javascript - これは有効ですか?

これが有効なJavaScriptかどうか教えてもらえますか? この種のことは C# ではできないことはわかっていますが、js ははるかに緩い言語です。

具体的には、配列名の動的生成..

アップデート..

そのため、ドキュメントの準備ができたときに初期化される arrMyArray という配列があります。sender.value = "MyArray" - ただし、MyArray2 など、他のものである可能性があります

私は、sender.value 値によって示される配列を動的に反復処理したいと考えています。

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

php - 非常に異常な PHP の動作

以下のコードでは、タスクの値がゼロであっても、タスクを印刷して終了するページを取得します。

出力:

ただし、最初の行を次のように変更すると:

正常に動作するのに、文字列 'delete' の値が 0 になるのはなぜですか?

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

php - PHPネストされたクラスを宣言/使用する方法

基本構造の連想配列が必要です

この種のものをPHPで実装するのに最適な方法は何ですか?明白な方法でネストする一連のクラスを作成しますか?これを一発で行うことはできますか?ここでは、C ++ / C / Javaのバックグラウンドから、ある程度の型安全性をエミュレートしようとしています。または、コード全体で定義された連想配列としてすべてを管理し、渡される構造がすべて一致することを期待する必要がありますか?

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

php - PHP クラスメソッドは、パラメーターを文字列ではなくオブジェクトとして扱います/パラメーターのデータ型を動的に解釈します

今日、私は新しいことを発見しました。

典型的なメンバー、プライベート、パブリック、および保護されたメソッドを持つ PHP クラスがあります。

方法の1つはこれです:

そして、これは警告を吐き出します:

json_decode() は、パラメーター 1 が文字列であると想定し、オブジェクトは .../File.php 行 xxx で指定されます

ちょっと待ってください。PHP は型付けが緩く、動的に解釈されませんか?