私はこれを達成したいと思います:
複雑な処理の結果が真である場合を除き、abc という名前の変数は None でなければなりません。私は冒頭と答えを書きましたが、うまくいきません:
def abc={
None
copie.getRoot().asInstanceOf[DefaultMutableTreeNode].children() foreach ({
site => <...more things after...>
}
<more things after> で、結果を見つけることができます。例: Some(site)
しかし、コンパイラはこの順序を受け入れません。つまり、「None」の後にいくつかの条件が続き、最終的に Some(xxx) で終了します。条件の後に "None" を指定すると、もちろん結果は常に "None" になり、期待どおりではありません。
このように機能するかどうか、またどのように機能するか教えていただけますか? または、どうすれば続行できますか?
@Robin:あなたは正しいと思いました:Javaにある場合のように考えました:結果はNoneまたはSome(xxx)のいずれかである必要がありますが、驚くべきことに、ブロックの先頭に「None」を配置し、「None」の後に条件ステートメントを配置すると、 EVENTIUALYLYはSome(xxx)を返しますが、Eclipseのコンパイラは私のコードを受け入れません。したがって、最初の質問は次のようになります: この順序は (None の後にいくつかの条件付き処理が続き、最終的に Some(xxx) を返しますか? 例:
def abc():Option[DefaultMutableTreeNode]={
None
MyTree.getRoot().children() foreach{site=>
if (site.toBeImported()) Some(site)
else site.children() foreach {type=>
if (type.toBeImported()) Some(type)
}
}
}
ここで、この関数は None を返します。サイトが "toBeImported" の場合は Some(site) (複数ある場合は最後のものが返されます)、タイプが "toBeImported" の場合は Some(type) (最後のサイト) を返します。これは私のプログラムにあるものではありませんが、アイデアをうまく要約しています。