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 } }
の重要なプロパティ上記の例に示されているのは、 パイプライン 、またはチェーン、操作、途中で例外をキャッチします。 NS
flatMapと
上記の例のマップコンビネータはそれぞれ、基本的に、正常に完了した値のいずれかを渡します。
チェーン内の次のコンビネータによってさらに操作される成功タイプ、またはにラップされた例外
失敗のタイプは通常、単にチェーンに渡されます。などのコンビネータ
回復して
RecoverWithは、障害が発生した場合に、ある種のデフォルトの動作を提供するように設計されています。
ノート :致命的ではない例外のみがコンビネータによってキャッチされます試してみてください(を参照) scala.util.control.NonFatal )。一方、重大なシステムエラーがスローされます。
ノート: :ドキュメントで特に指定されていない限り、すべてのTryコンビネータは例外をキャッチして失敗を返します。
Twitterのスタックの不可欠な部分として長年使用された後、Scala標準ライブラリにアクセスしてみてください。
タイプメンバー
最後の クラス WithFilter AnyRefを拡張します
抽象値メンバー
概要 defcanEqual((それ:任意):ブール値
サブクラスでオーバーライドされるように開かれている、適切に設計されたすべてのequalsメソッドから呼び出す必要のあるメソッド。見る Scalaでのプログラミング、第28章 議論とデザインのために。
- それ
可能な同等性についてプローブされる値
- 戻り値
このインスタンスが等しくなる可能性がある場合はtrue
それ以外の場合はfalse
- 定義クラス
- 等しい
概要 def収集[U]((pf:PartialFunction [NS、U]): 試す [U]
概要 def失敗した: 試す [スロー可能]
これを反転します試す。これが
失敗、例外をラップして返します
成功。これが
成功し、
を含む失敗
UnsupportedOperationException。
概要 defフィルター((NS: (NS)=>ブール値): 試す [NS]
概要 defflatMap[U]((NS: (NS)=> 試す [U]): 試す [U]
概要 def平らにする[U]((暗黙家: [NS、 試す [U]]): 試す [U]
概要 def折り畳み[U]((fa :(スロー可能)=>U、フェイスブック :(NS)=>U):U
適用しますこれが
失敗または
これが
成功。もしも
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]((デフォルト:=>U):U
これから値を返します成功または与えられた
これが
失敗。
ノート: :これは、成功しなかった場合に例外をスローし、デフォルトでは例外をスローします。
概要 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引数がコンパイルの一部として消去されるため、リストの内容が要求された型であるかどうかを確認することはできません。
- 戻り値
レシーバーオブジェクト。
- 定義クラス
- どれでも
- スローされた例外
レシーバーオブジェクトがタイプの消去のインスタンスではない場合のClassCastException
T0。
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引数がコンパイルの一部として消去されるため、リストの内容が指定された型であるかどうかを確認することはできません。
- 戻り値
レシーバーオブジェクトがタイプの消去のインスタンスである場合はtrue
T0;
それ以外の場合は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:=>T0):T0
- 定義クラス
- 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。
- 注釈
- @ 列をなして()