私はなぜclearifyしたいですIntの代わりにAnyValが得られます。私は攻撃的ではないことを望んでいませんが、あなたもプログラミングに新しい人のようです...?
あなたのコードがあなたの望むことをすると仮定すると、2番目のIfは本当に感覚的ではありません。 1つは書くでしょう:
val blockNumber = {
if(x.getName equals ("NATIVE")) 0
else if(x.getName equals ("DATIVE")) 1
}
これはまだAnyValです。 "NATIVE"または "DATIVE"のいずれかが一致しない場合、コンパイラはどの値を渡すかわからないため、Unitです。 UnitとIntの共通のスーパータイプはAnyValです。
不足しているパスを持つだからあなたのコードに:
val blockNumber = {
if(x.getName equals ("NATIVE")) 0
else {
if(x.getName equals ("DATIVE")) 1
else Unit
}
}
ですから、お互いにネストされ、基本的には2 if文を持っています。最初のものは、x.getNameの値が "NATIVE"であり、もう1つが、デフォルトまたは他のすべての場合を処理するための通常のelseパスであるかどうかを尋ねます。しかし、ユニット内で解決される他のパスがなければ、別のパスを入れます。既に述べたように、IntとUnitの共通のスーパータイプはAnyValです。あなたが書くことができる唯一の2例「NATIVE」と「与格」を持つという仮定の下で
:
val blockNumber = if(x.getNmae equal ("NATIVE")) 0
else 1
をそれ以外の場合は@Dogbertのマッチケースのアプローチが移動するための方法です。ケースが起こらない可能性がある場合は、Optionを@Dogbertのように使用する必要があります。そうでない場合、少なくとも1つのケースが一致する場合、オプションなしでIntを使用することができます。
親切に、助けてください!
'x.getName'が' 'NATIVE ''でも '' DATIVE "'でもない場合、どんな価値がありますか? – Dogbert
これは何もするべきではありません。私はvalが空でなければならないことを意味します – Goldengirl
'blockNumber'に関して"空 "とは何ですか?空の数字とは何ですか? –