Scalaの例を試す



Scala Try Example



仲間 オブジェクト試してみてください

封印された要約 クラス 試す[+ T]シリアライズ可能で製品を拡張

NStry型は、例外が発生するか、正常に計算された値を返す可能性のある計算を表します。に似ていますが、意味的には異なります scala.util.Either タイプ。

のインスタンスTry [T]は、次のいずれかのインスタンスです。 scala.util.Success [T]または scala.util.Failure [NS]。



例えば、tryを使用すると、例外が発生する可能性のあるすべての場所で明示的な例外処理を行う必要なしに、ユーザー定義の入力で除算を実行できます。

例:



import scala.io.StdIn import scala.util.{Try, Success, Failure} def divide: Try[Int] = { val dividend = Try(StdIn.readLine('Enter an Int that you'd like to divide:
').toInt) val divisor = Try(StdIn.readLine('Enter an Int that you'd like to divide by:
').toInt) val problem = dividend.flatMap(x => divisor.map(y => x/y)) problem match { case Success(v) => println('Result of ' + dividend.get + '/'+ divisor.get +' is: ' + v) Success(v) case Failure(e) => println('You must've divided by zero or entered something that's not an Int. Try again!') println('Info from the exception: ' + e.getMessage) divide } }

の重要なプロパティ上記の例に示されているのは、 パイプライン 、またはチェーン、操作、途中で例外をキャッチします。 NSflatMapと上記の例のマップコンビネータはそれぞれ、基本的に、正常に完了した値のいずれかを渡します。チェーン内の次のコンビネータによってさらに操作される成功タイプ、またはにラップされた例外失敗のタイプは通常、単にチェーンに渡されます。などのコンビネータ回復してRecoverWithは、障害が発生した場合に、ある種のデフォルトの動作を提供するように設計されています。

ノート :致命的ではない例外のみがコンビネータによってキャッチされます試してみてください(を参照) scala.util.control.NonFatal )。一方、重大なシステムエラーがスローされます。

ノート: :ドキュメントで特に指定されていない限り、すべてのTryコンビネータは例外をキャッチして失敗を返します。



Twitterのスタックの不可欠な部分として長年使用された後、Scala標準ライブラリにアクセスしてみてください。

ソース
Try.scala
以来

2.10

線形スーパータイプ
java.io.Serializable、Product、Equals、AnyRef、Any
既知のサブクラス
失敗成功

タイプメンバー

最後の クラス WithFilter AnyRefを拡張します

抽象値メンバー

概要 defcanEqual((それ:任意:ブール値

サブクラスでオーバーライドされるように開かれている、適切に設計されたすべてのequalsメソッドから呼び出す必要のあるメソッド。見る Scalaでのプログラミング、第28章 議論とデザインのために。

それ

可能な同等性についてプローブされる値

戻り値

このインスタンスが等しくなる可能性がある場合はtrueそれ以外の場合はfalse

定義クラス
等しい

概要 def収集[U]((pf:PartialFunction [NSU]試す [U]

概要 def失敗した試す [スロー可能]

これを反転します試す。これが失敗、例外をラップして返します成功。これが成功し、を含む失敗UnsupportedOperationException。

概要 defフィルター((NS: (NS)=>ブール値試す [NS]

概要 defflatMap[U]((NS: (NS)=> 試す [U]試す [U]

概要 def平らにする[U]((暗黙家: [NS試す [U]]試す [U]

概要 def折り畳み[U]((fa :(スロー可能)=>Uフェイスブック :(NS)=>UU

適用しますこれが失敗またはこれが成功。もしもfbが最初に適用され、例外がスローされます。この例外を除いて、faが適用されます。

fa

これが失敗

fb

これが成功

戻り値

関数を適用した結果

例:
    val result: Try[Int] = Try { string.toInt } log(result.fold( ex => 'Operation failed with ' + ex, v => 'Operation produced value: ' + v ))

概要 defforeach[U]((NS: (NS)=>U: 単位

指定された関数を適用しますfこれが成功、それ以外の場合は戻りますこれが失敗。

ノート: もしもfがスローされると、このメソッドは例外をスローする可能性があります。

概要 def得るNS

概要 defgetOrElse[>で:NS]((デフォルト:=>UU

これから値を返します成功または与えられたこれが失敗。

ノート: :これは、成功しなかった場合に例外をスローし、デフォルトでは例外をスローします。

概要 defisFailure:ブール値

概要 defisSuccess:ブール値

概要 def地図[U]((NS: (NS)=>U試す [U]

概要 deforElse[>で:NS]((デフォルト:=> 試す [U]試す [U]

概要 defproductArity:Int

この商品のサイズ。

戻り値

製品の場合1、 ...、 NS)、 戻り値

定義クラス
製品

概要 defproductElement((n:Int: どれでも

それでNSこの製品の要素、0ベース。言い換えれば、製品の場合1、 ...、 NS)、 戻り値NS(n + 1)どこ0<= n < k.

NS

返す要素のインデックス

戻り値

要素最初の要素の後のn個の要素

定義クラス
製品
スローされた例外

IndexOutOfBoundsExceptionの場合nが範囲外です(n = productArity)。

概要 def回復します[>で:NS]((pf:PartialFunction [Throwable、U]試す [U]

指定された関数を適用しますfこれが失敗。それ以外の場合、これが成功。これは例外の地図のようなものです。

概要 def回復する[>で:NS]((pf:PartialFunction [Throwable、 試す [U]]試す [U]

指定された関数を適用しますfこれが失敗。それ以外の場合、これが成功。これは例外のflatMap。

概要 deftoEitherまた [スロー可能、NS]

概要 deftoOption: オプション [NS]

概要 def変身[U]((NS: (NS)=> 試す [U]f :(スロー可能)=> 試す [U]試す [U]

具体的なバリューメンバー

最後の def!=((arg0:任意:ブール値

2つのオブジェクトの不平等をテストします。

戻り値

!(this == that)の場合はtrue、それ以外の場合はfalse。

定義クラス
AnyRef→Any

最後の def##():Int

に相当ボックス化された数値タイプを除くx.hashCodeおよびヌル。数値の場合、値の同等性と一致するハッシュ値を返します。2つの値型インスタンスがtrueと比較される場合、##はそれぞれに対して同じハッシュ値を生成します。にとってnullはハッシュコードを返します。null.hashCodeはNullPointerException。

戻り値

==と一致するハッシュ値

定義クラス
AnyRef→Any

def+((その他:文字列: 弦

暗黙
このメンバーは、からの暗黙的な変換によって追加されます 試す [NS] to any2stringadd [ 試す [NS]] scala.Predefのメソッドany2stringaddによって実行されます。
定義クラス
any2stringadd

def->[NS]((と: B:( 試す [NS]、 B

暗黙
このメンバーは、からの暗黙的な変換によって追加されます 試す [NS]からArrowAssoc [ 試す [NS]] scala.PredefのメソッドArrowAssocによって実行されます。
定義クラス
ArrowAssoc
注釈
@ 列をなして()

最後の def==((arg0:任意:ブール値

表現x ==これは同等ですif(x eq null)that eq null else x.equals(that)。

戻り値

レシーバーオブジェクトが引数と同等である場合はtrue。それ以外の場合はfalse。

定義クラス
AnyRef→Any

最後の defasInstanceOf[T0]T0

レシーバーオブジェクトをタイプにキャストしますT0。

実行時のキャストの成功は、Scalaの消去セマンティクスを法とするものであることに注意してください。したがって、式1.asInstanceOf [String]は実行時のClassCastException、式List(1).asInstanceOf [List [String]]はしません。後者の例では、type引数がコンパイルの一部として消去されるため、リストの内容が要求された型であるかどうかを確認することはできません。

戻り値

レシーバーオブジェクト。

定義クラス
どれでも
スローされた例外

レシーバーオブジェクトがタイプの消去のインスタンスではない場合のClassCastExceptionT0。

defクローン():AnyRef

レシーバーオブジェクトのコピーを作成します。

のデフォルトの実装cloneメソッドはプラットフォームに依存します。

戻り値

レシーバーオブジェクトのコピー。

属性
保護された[java.lang]
定義クラス
AnyRef
注釈
@スロー((classOf [java.lang.CloneNotSupportedException] @ネイティブ()
ノート

AnyRefのメンバーとしてSLSによって指定されていません

def確実にする((cond :( 試す [NS])=>ブール値msg:=>任意試す [NS]

暗黙
このメンバーは、からの暗黙的な変換によって追加されます 試す [NS]確実に[ 試す [NS]] scala.PredefでEnsuringメソッドによって実行されます。
定義クラス
確実にする

def確実にする((cond :( 試す [NS])=>ブール値試す [NS]

暗黙
このメンバーは、からの暗黙的な変換によって追加されます 試す [NS]確実に[ 試す [NS]] scala.PredefでEnsuringメソッドによって実行されます。
定義クラス
確実にする

def確実にする((cond:ブール値msg:=>任意試す [NS]

暗黙
このメンバーは、からの暗黙的な変換によって追加されます 試す [NS]確実に[ 試す [NS]] scala.PredefでEnsuringメソッドによって実行されます。
定義クラス
確実にする

def確実にする((cond:ブール値試す [NS]

暗黙
このメンバーは、からの暗黙的な変換によって追加されます 試す [NS]確実に[ 試す [NS]] scala.PredefでEnsuringメソッドによって実行されます。
定義クラス
確実にする

最後の defeq((arg0:AnyRef:ブール値

引数(that)はレシーバーオブジェクトへの参照です(これ)。

NSeqメソッドは 同値関係 null以外のインスタンスAnyRef、および3つの追加プロパティがあります。

    一貫性があります:null以外のインスタンスの場合xとタイプのyAnyRef、の複数の呼び出しx.eq(y)は一貫して真または一貫して戻るfalse。null以外のインスタンスの場合タイプのxAnyRef、x.eq(null)およびnull.eq(x)はNS。null.eq(null)はNS。

オーバーライドする場合等しいまたはhashCodeメソッドでは、それらの動作が参照の同等性と一致していることを確認することが重要です。したがって、2つのオブジェクトが相互に参照している場合(o1 eq o2)、それらは互いに等しくなければなりません(o1 == o2)そしてそれらは同じ値にハッシュする必要があります(o1.hashCode == o2.hashCode)。

戻り値

引数がレシーバーオブジェクトへの参照である場合はtrue。それ以外の場合はfalse。

定義クラス
AnyRef

def等しい((arg0:AnyRef:ブール値

参照型の等式法。デフォルトの実装はに委任しますeq。

も参照してくださいscala.Anyで等しい。

戻り値

レシーバーオブジェクトが引数と同等である場合はtrue。それ以外の場合はfalse。

定義クラス
AnyRef→Any

defファイナライズ(): 単位

オブジェクトへの参照がなくなったときに、レシーバーオブジェクトのガベージコレクターによって呼び出されます。

いつ、どのような場合の詳細finalizeメソッドが呼び出され、ファイナライズと非ローカルのリターンと例外は、すべてプラットフォームに依存します。

属性
保護された[java.lang]
定義クラス
AnyRef
注釈
@スロー((classOf [java.lang.Throwable]
ノート

AnyRefのメンバーとしてSLSによって指定されていません

defフォーマット済み((fmtstr:文字列: 弦

指定された形式の文字列を返しますフォーマット文字列。フォーマット文字列はString.format(@see java.lang.String.format)。

暗黙
このメンバーは、からの暗黙的な変換によって追加されます 試す [NS]からStringFormat [ 試す [NS]] scala.PredefのメソッドStringFormatによって実行されます。
定義クラス
StringFormat
注釈
@ 列をなして()

最後の defgetClass()クラス[_<: AnyRef ]

オブジェクトのランタイムクラス表現を返します。

戻り値

受信者の実行時型に対応するクラスオブジェクト。

定義クラス
AnyRef→Any
注釈
@ネイティブ()

defハッシュコード():Int

参照型のhashCodeメソッド。 scala.AnyのhashCodeを参照してください。

戻り値

このオブジェクトのハッシュコード値。

定義クラス
AnyRef→Any
注釈
@ネイティブ()

最後の defisInstanceOf[T0]:ブール値

レシーバーオブジェクトの動的タイプがT0。

テストの結果は、Scalaの消去セマンティクスを法とするものであることに注意してください。したがって、式1.isInstanceOf [String]は戻りますfalse、式はList(1).isInstanceOf [List [String]]は戻りますNS。後者の例では、type引数がコンパイルの一部として消去されるため、リストの内容が指定された型であるかどうかを確認することはできません。

戻り値

レシーバーオブジェクトがタイプの消去のインスタンスである場合はtrueT0;それ以外の場合はfalse。

定義クラス
どれでも

最後の def生まれ((arg0:AnyRef:ブール値

に相当!(this eq that)。

戻り値

引数がレシーバーオブジェクトへの参照でない場合はtrue。それ以外の場合はfalse。

定義クラス
AnyRef

最後の def通知する(): 単位

レシーバーオブジェクトのモニターで待機している単一のスレッドをウェイクアップします。

定義クラス
AnyRef
注釈
@ネイティブ()
ノート

AnyRefのメンバーとしてSLSによって指定されていません

最後の defnotifyAll(): 単位

レシーバーオブジェクトのモニターで待機しているすべてのスレッドをウェイクアップします。

定義クラス
AnyRef
注釈
@ネイティブ()
ノート

AnyRefのメンバーとしてSLSによって指定されていません

defproductElementName((n:Int: 弦

nの名前NSこの製品の要素、0ベース。デフォルトの実装では、空の文字列。

NS

返す要素名のインデックス

戻り値

指定された要素の名前

定義クラス
製品
スローされた例外

IndexOutOfBoundsExceptionの場合nが範囲外です(n = productArity)。

defproductElementNames:イテレータ[文字列]

この製品のすべての要素の名前に対するイテレーター。

定義クラス
製品

defproductIterator:イテレータ[任意]

この製品のすべての要素に対するイテレータ。

戻り値

デフォルトの実装では、イテレータ[任意]

定義クラス
製品

defproductPrefix: 弦

で使用される文字列派生クラスのtoStringメソッド。実装では、このメソッドをオーバーライドして、結果の前に文字列プレフィックスを追加できます。toStringメソッド。

戻り値

デフォルトの実装では、空の文字列

定義クラス
製品

最後の def同期[T0]((arg0:=>T0T0

定義クラス
AnyRef

deftoString()

このオブジェクトの文字列表現を作成します。デフォルトの表現はプラットフォームに依存します。 Javaプラットフォームでは、クラス名「@」とオブジェクトのハッシュコードを16進数で連結したものです。

戻り値

オブジェクトの文字列表現。

定義クラス
AnyRef→Any

最後の def待つ(): 単位

定義クラス
AnyRef
注釈
@スロー((classOf [java.lang.InterruptedException]

最後の def待つ((arg0:長いarg1:Int: 単位

定義クラス
AnyRef
注釈
@スロー((classOf [java.lang.InterruptedException]

最後の def待つ((arg0:長い: 単位

定義クラス
AnyRef
注釈
@スロー((classOf [java.lang.InterruptedException] @ネイティブ()

最後の defwithFilter((NS: (NS)=>ブール値WithFilter

非厳密なフィルターを作成し、最終的にこれをに変換します述語が満たされない場合は失敗します。

注:フィルターとは異なり、withFilterは新しいTryを作成しません。代わりに、後続のドメインを制限します地図、flatMap、foreach、およびwithFilter操作。

Tryは1要素のコレクションであるため、これは少しやり過ぎかもしれませんが、OptionのwithFilterや他のコレクションと一貫性があります。

NS

要素のテストに使用される述語。

戻り値

クラスのオブジェクトWithFilterは、地図、flatMap、foreach、およびwithFilter操作。これらの操作はすべて、述語を満たすこのTryの要素に適用されます。NS。

注釈
@ 列をなして()