問題タブ [preconditions]
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.
java - 文字列を負の数またはゼロとして解釈し、それに応じて IAE をスローする方法は?
文字列を受け入れるメソッドがあり、それは文字列または通常の文字列として数値にすることができます。
clientId
ここで、誰かが負の数値"-12345"
またはゼロとして渡されているかどうかを確認してみましょう。"0"
これを解釈してIllegalArgumentException
、メッセージをスローする"clientid must not be negative or zero as a number"
か、他の適切なメッセージである可能性があります。可能であれば、グアバの前提条件を使用してこれを行うにはどうすればよいですか?
提案に従って、私は以下のコードを使用しています:
それを行うより良い方法はありますか?
error-handling - Clojure :destructuring 時に失敗した値を前に報告する
このSO postに続いて、関数の前提条件の値を出力したいと思います。ただし、次の場合は失敗します(おそらく破壊):
私はdir?
ヘルパー関数を持っています(これをスキップしてください):
それは問題なく動作し、is
マクロを使用すると、テストと渡されたパラメーターの両方を確認できるいくつかの素晴らしいエラーメッセージが表示されます。
clojure.lang.PersistentList$EmptyList@1 (boot.user4515592986834245937.clj:86) で失敗: (dir? (io/file "resources/statice")) 実際: (not (dir? #object[java.io.ファイル 0x6730a420 "resources/statice"]))
ただし、前提条件で使用しようとすると:pre
、醜いエラーが発生します。
clojure.lang.Compiler$CompilerException: java.lang.AssertionError: アサートに失敗しました: (is (dir? (io/file dir)))、コンパイル中:(boot.user4515592986834245937.clj:80:12) java.lang.AssertionError:アサートに失敗しました: (is (dir? (io/file dir)))
上記のようなエラーメッセージを関数で取得するにはどうすればよいですか?
念のため、Clojure 1.7 を使用しています。
java - 正の数、null/空の文字列について文字列を検証する
String を受け入れるメソッドがあり、clientid
以下の要件があります。
clientid
ゼロより大きい正の数にすることができます。ただし、負の数またはゼロの場合はIllegalArgumentException
、メッセージとともにスローします。clientid
null
または空の文字列にすることはできません。しかし、そうであればIllegalArgumentException
、メッセージを投げてください。clientid
通常の文字列でもかまいません。たとえば、abcdefgh
またはその他の文字列にすることができます。
このコードは正常に動作します。問題は、バージョン 11 以上の guava ライブラリを使用できないことです。使用すると、このライブラリを使用するお客様に問題が発生するため、要するに、final Long id = Longs.tryParse(clientid);
グアバを使用せずにこの行の代替品を探しているか、使用できる可能性があります。古い guava バージョンLongs.tryParse
11。Guava 14 以降でメソッドが追加されたため。
それを行う最善の方法は何ですか?Apache Commons から使用できるものはありますか?
programming-languages - 前提条件と事後条件とは何ですか?
私はプログラミングの方法を学んでいますが、頭を悩ませることができないのは、 preconditions とpostconditionsです。
関数を呼び出す前の if ステートメントは前提条件と見なされますか、それともほとんどの言語でこれを行う別のより効率的な方法はありますか?
また、プログラミングに関する現在の知識で理解できる前提条件の例を見つけるのに苦労しています。誰かが単純なものを証明できれば、本当に感謝します(どの言語でも問題ありません)
oracle - Preconditions を使用した Liquibase-migration が EXECUTED ではなく MARK_RAN であった理由を確認するにはどうすればよいですか?
Liquibase 変更セットで問題が発生しました。変更セットはどういうわけかそのようなものです:
私はそれを絶対に知っており、table_a
存在します...しかし、それでも常に実行され、リンクされたファイル内のSQLが有効かどうかを何度か確認しました。そのSQLを直接発行すると、文句なしに実行されます。table_b
table_c
view-definition-v1.sql
ファイル内のSQLview-definition-v1.sql
はやや似ています
ファイル内のSQLview-definition-v2.sql
はやや似ています
tableName="table_a"
私はすでにまたはを試しtableName="TABLE_A"
ましたが、それでもまったく機能していないようです。この問題を示さない他のいくつかの変更セットを取得しました。誰かが手がかりを持っていますか??
使用する Liquibase のバージョンは 3.4.2、データベースは Oracle 12cR1 StandardEdition1
ヒントをありがとう、そしてよろしく、B
linear-algebra - どのスパース線形ソルバーが高速ですか? SparseLU または BiCGSTAB?
私は Eigen の SparseLU と BicGSTAB メソッドを、3000*3000 から 16000*16000 の範囲の密行列のサイズの疎行列でテストしました。すべてのケースで、SparseLU が BicGSTAB メソッドよりも約 13% 高速であることを示しています。
BiCGSTAB に RowMajor スパース マトリックスをフィードしたり、プレコンディショナーを与えたりしませんでした。それが遅い理由かもしれません。
だから、両方の方法をうまくやれば、どちらが速いのでしょうか?
行列のサイズが数百万 * 数百万になるとどうなりますか?
どうもありがとう!
swift - 前提条件を使用して Swift コードをテストする
前提条件を持つ Swift メソッドのテストをどのように作成しますか? 以下に例を示します。
使用XCTAssertThrowsError
しても機能しません:
これにより、テストの実行時にエラーが発生します。
スレッド 1:EXEC_BAD_INSTRUCTION (コード = EXCI386_INVOP、サブコード = 0x0)
Swift の前提条件をテストする方法はありますか?
mysql - Mysqlでvarcharサイズを選択する方法は?
テーブルに varchar 型の列があります。定義されたvarchar型のサイズを確認するには、どの SQL 選択を実行する必要がありますか?
ノート!
- 問題は、varchar 列で最大値または最小値を選択することではありません。定義された型サイズを確認する必要があります。
- はい、テーブル定義全体を表示するために使用できる
DESCRIBE
andステートメントがあります。EXPLAIN
しかし、この方法は私には適していません.liquibaseの前提条件を検出するには、列が更新されているかどうかを確認する必要があるだけなので、この方法は適していません。
design-by-contract - 例外は有効な事後条件ですか?
次のインターフェースを検討してください。
entity、target、およびworldはすべて有効な入力であることを認めます。しかし、パスを見つけるために使用されるアルゴリズム (この場合は Astar) は、パスを見つけることができません。コンクリートの壁に囲まれたターゲットの位置。
事後条件がエンティティからターゲットへのパス(開始からゴール) または NoPathException (パスが見つからなかった場合) であると述べるのは有効ですか?
-それとも、スタートからゴールまで有効な経路がなければならないという前提条件を述べるべきですか?
これは宿題ではなく、学期のプロジェクト レポートを改善するための質問です。フレームワークについて学ぶつもりはありません。これは純粋に、契約による設計に関する標準と形式の問題です。この件についてご説明いただきありがとうございます。
c++ - 継承が一部の最終型のみの前提条件を誘導する場合を文書化/アサートする方法
Doxygen で文書化されている、純粋仮想関数を呼び出す関数をFoo
持つこの単純な基本クラスを検討してください。foo
foo_
この抽象クラスについて文書化する前提条件はありません。
Bar
ここで、正しく機能するための前提条件が存在する派生クラスを考えてみましょう。
foo_
ここで、によって呼び出されるを呼び出すときに x に前提条件がありfoo
ます。次に、foo
最終的な型に応じて前提条件があります。
いくつかの質問 :
Foo::foo
最終的なタイプに関係なく、前提条件を追加する必要がありますか? ユーザーがクラスを使用するときに最終型をまったく知らない場合、それは論理的に見えます。ただし、ユーザーは前提条件なしで別のクラスをBaz
派生させ、負の値で明示的に呼び出すこともできます。それは問題ではないはずです。Foo
Baz::foo(double)
- 私のポリモーフィズムの概念では、クラス
Foo
は自分の子供について何も知る必要がないため、前提条件は存在しません。しかし、親クラスのユーザーは、クラスを使用するために子クラスを知る必要はありません。この矛盾を解決するには? - この種のことを Doxygen で文書化する特定の(/最良の)方法はありますか?