タグ付けされた質問 「typechecking」


11
(Swiftで)オブジェクトのタイプをどのようにして見つけますか?
プログラムを理解しようとするとき、または一部のケースでは、何かのタイプを実際に見つけることができると便利です。デバッガーがいくつかの型情報を表示できることを知っています。通常、型推論に依存して、そのような状況で型を指定しないことで回避できますが、それでも、Pythonのようなものが欲しいですtype() dynamicType(この質問を参照) 更新:これはSwiftの最近のバージョンで変更されobj.dynamicType、動的タイプのインスタンスではなく、タイプへの参照を提供します。 これは最も有望なようですが、これまでのところ、実際のタイプを見つけることができませんでした class MyClass { var count = 0 } let mc = MyClass() # update: this now evaluates as true mc.dynamicType === MyClass.self 私はまた、新しいオブジェクト、インスタンス化するクラス参照を使用してみましたし仕事を、しかし奇妙なことに、私は追加する必要がありますと言って私にエラーを与えたrequired初期化子を: 動作します: class MyClass { var count = 0 required init() { } } let myClass2 = MyClass.self let mc2 = MyClass2() それでも、特定のオブジェクトのタイプを実際に発見するためのほんの小さなステップ 編集:私は今かなりの数の無関係な詳細を削除しました-興味があれば編集履歴を見てください:)

3
TypeScriptでのクラス型チェック
ActionScriptでは、is演算子を使用して実行時に型を確認できます。 var mySprite:Sprite = new Sprite(); trace(mySprite is Sprite); // true trace(mySprite is DisplayObject);// true trace(mySprite is IEventDispatcher); // true 変数(拡張または)が特定のクラスまたはTypeScriptとのインターフェースであるかどうかを検出することはできますか? 言語仕様では何も見つかりませんでした。クラス/インターフェースを操作するときは、そこにあるはずです。

3
* argsおよび** kwargsの型注釈
いくつかのインターフェイスを作成するために、抽象基本クラスを使用してPythonの型注釈を試しています。*argsandの可能なタイプに注釈を付ける方法はあり**kwargsますか? たとえば、関数への賢明な引数が1つintまたは2つintのであることをどのように表現しますか?type(args)与えTuple私の推測のようにタイプに注釈を付けることだったのでUnion[Tuple[int, int], Tuple[int]]、これは動作しません。 from typing import Union, Tuple def foo(*args: Union[Tuple[int, int], Tuple[int]]): try: i, j = args return i + j except ValueError: assert len(args) == 1 i = args[0] return i # ok print(foo((1,))) print(foo((1, 2))) # mypy does not like this print(foo(1)) print(foo(1, 2)) mypyからのエラーメッセージ: t.py: …

8
Java:InstanceofおよびGenerics
値のインデックスのジェネリックデータ構造を調べる前に、それがthisパラメーター化されている型のインスタンスでさえあるかどうかを確認したいと思います。 しかし、これを行うとEclipseは不平を言います。 @Override public int indexOf(Object arg0) { if (!(arg0 instanceof E)) { return -1; } これはエラーメッセージです。 型パラメーターEに対してinstanceofチェックを実行できません。ジェネリック型情報は実行時に消去されるため、代わりにその消去オブジェクトを使用してください それを行うためのより良い方法は何ですか?


9
Rubyオブジェクトがブール値かどうかを確認する方法
オブジェクトがブール値であるかどうかを簡単に確認できないようです。Rubyにこのようなものはありますか? true.is_a?(Boolean) false.is_a?(Boolean) 今私はこれをやっていて、短くしたいと思います: some_var = rand(1) == 1 ? true : false (some_var.is_a?(TrueClass) || some_var.is_a?(FalseClass))
122 ruby  typechecking 

1
この手動で定義されたHasFieldインスタンスで「制約トリック」が機能しないのはなぜですか?
lens(GHC.Records)を使用するこの(確かに奇妙な)コードがあります: {-# LANGUAGE DataKinds, PolyKinds, FlexibleInstances, UndecidableInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} module Main where import Control.Lens import GHC.Records data Glass r = Glass -- just a dumb proxy class Glassy r where the :: Glass r instance …

2
合計型-Haskellで `show(Int | Double)`が `(show Int)|と異なる理由 (ダブルを表示) `
なぜこれらは同等ではないのですか? show $ if someCondition then someInt else some double そして if someCondition then show someInt else show someDouble if ... else最初の例の部分を単独で式に分離した場合Int | Double、TypeScriptで簡単に実行できるようなTypeのような匿名合計型でその型を表すことができないことを理解しています(TypeScriptについて言及しているため、 langaugeは頻繁に使用し、Sum型をサポートしているため、Eitherデータを使用する必要があるため、それに基づいてを呼び出しますshow。 ここで示した例はささいなことですが、私にとっては、someCondition「何かを表示し、何かが依存する」と考える方が理にかなっています。コードの重複が少ない場合(ここでは、ショーが2回繰り返されますが、長い関数のアプリケーションでif ... elseある可能性があり、2つ以上の分岐を検討する必要がある場合もあります) 私の考えでは、合計型(ここではInt | Double)を構成する各型がshow関数のパラメーターとして使用できるかどうかをコンパイラーがチェックし、型が正しいかどうかを判断するのは簡単です。さらに良いのは、show関数がstringパラメーターのタイプに関係なく常に返されるため、コンパイラーがすべての可能な「ブランチ」(したがってすべての可能なタイプ)を運ぶ必要がないことです。 そのような機能が存在しないのは選択によるものですか?それとも、実装するのは難しいと思いますか?

1
ジェネリックメソッドの「違法な」実装:コンパイルエラーが発生しないのはなぜですか?
私はこのシグネチャを持つメソッドを含むインターフェースを持っています: <P extends MergeProperty<T> & RestartApplicant> List<P> loadPropertiesFrom(T p1, T p2); 基本的には、MergePropertyないクラスではありません実装RestartApplicant、そしてRestartApplicant本当にこの問題を理解するために重要ではありません方法を含む機能のインタフェースです。 これが問題です。このインターフェイスを実装するクラスを作成すると、Javaを使用すると、次のコードをコンパイルエラーなしで実行できます。 public class MyImplementation implements MyInterfacePreviouslyDescribed { @Override public List<MergeProperty<MathObject>> loadPropertiesFrom(MathObject p1, MathObject p2) { return Arrays.asList( // some random instances of MergeProperty that do not implement RestartApplicant ); } } 明らかに、私はそこでの実装の制限を尊重していません。このシグネチャが与えられた場合、使用Arrays.asList(...)して返すリストには、を実装する要素を含める必要はありませんRestartApplicant。MergeProperty実装しないでくださいRestartApplicant。したがって、これはおそらくどこかにキャストエラーを引き起こすことになります。 それでも、警告が表示されます: Type safety: The return type …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.