私はif文でこれを行うことができますが、おそらく "scala"これを行う。スカラのシーケンスをOption [Seq]に変換してラップする方法です。リストが空の場合、OptionはNoneです。
def notScalaConv(in: Seq[String]): Option[Seq[String]] = {
if (in.isEmpty)
None
else
Option(in)
}
私はif文でこれを行うことができますが、おそらく "scala"これを行う。スカラのシーケンスをOption [Seq]に変換してラップする方法です。リストが空の場合、OptionはNoneです。
def notScalaConv(in: Seq[String]): Option[Seq[String]] = {
if (in.isEmpty)
None
else
Option(in)
}
あなたのSeq
Option
に持ち上げ、それをフィルタリングすることができます。
def notScalaConv(in: Seq[String]): Option[Seq[String]] = {
Option(in).filter(_.nonEmpty)
}
'nonEmpty'をダブルネガティブよりも使う方が良いです。 –
@MichaelZajacそれはそれが呼ばれているものです。私はクイック検索でそれを見つけることができませんでした。ありがとう:) – marstran
は、なぜあなたは単にあなたOption(Seq[String])
を与えるだろうval seqOpt = Option(yourSeq)
を行うことはありません。
val nonEmpty = Seq("somevalue")
val empty = Seq()
val seqOpt = List(Option(empty), Option(nonEmpty)) map {
case seq if seq.get.isEmpty => None
case x => x
}
assert(seqOpt.head == None)
assert(seqOpt(1) == Option(nonEmpty))
'オプション[Seq [Nothing]]'!= 'None'。 'Seq()'に型パラメータを指定しなかったので、 'Seq [Nothing]'のみを返します。 – marstran
この回答は理にかなっていません。 – pedrofurla
大丈夫です。私は 'option(dumb)'でした。:) – prayagupd
'if'が、他の言語でも珍しくありスカラでの発現である:それを使用して、この方法は、あなたがそれを書いたように、あなたの' if'が動作しない私に「scalaishを」 –
に見える、このような1つの分岐ifの値は常に「Unit」であるからです。私は 'else'を追加して修正しました。 –