2016-10-28 4 views
1

次のコードでoptキーワードとは何ですか?Scala:optキーワードとは何ですか?

import scala.util.control.Exception._ 
import java.net._ 

val s = "http://www.scala-lang.org/" 
val x1 = catching(classOf[MalformedURLException]) opt new URL(s) 
val x2 = catching(classOf[MalformedURLException], classOf[NullPointerException]) either new URL(s) 

http://www.scala-lang.org/api/current/scala/util/control/Exceptionそれはキーワードではありません$ .htmlを

答えて

4

、それはここではその定義とScaladocだ、scala.util.control.Exception._から輸入方法です:

/** Apply this catch logic to the supplied body, mapping the result 
* into `Option[T]` - `None` if any exception was caught, `Some(T)` otherwise. 
*/ 
def opt[U >: T](body: => U): Option[U] = toOption(Some(body)) 
+0

にご協力いただきありがとうございますあなたに! – JNish

7

それはそれはだ、キーワードではありませんCatch[T]で定義されているメソッドで、結果のタイプはcatching()です。上記のコードは、我々は方法opteitherを呼び出すために.構文を使用し、以下に相当しhttp://www.scala-lang.org/api/current/index.html#[email protected][U%3E:T](body:=%3EU):Option[U]

でそのドキュメントを参照してください。

val s = "http://www.scala-lang.org/" 
val x1 = catching(classOf[MalformedURLException]).opt(new URL(s)) 
val x2 = catching(classOf[MalformedURLException], classOf[NullPointerException]).either(new URL(s)) 
+0

2つの似たような回答がほとんど同じ時刻に投稿されました。どちらも礼儀正しです - 今何をしていますか? :)) –

+1

AFAIK Stack Overflowでは、同じ質問に対して2つの回答を受け入れることができないため、公正な解決策はありません。最も不公平なものは、受け入れるものをランダムに選んで、もう一方を受け入れることです... – sjrd

+0

私が時には使われているのを見た別の「戦略」は、最も評判の悪いユーザーの答えを受け入れることです。 – sjrd

関連する問題