[解決済み] ScalaにおけるNull/Nothing/Unitの使用法
質問
今、読みました。 http://oldfashionedsoftware.com/2008/08/20/a-post-about-nothing/
私が理解している限りでは
Null
は trait であり、その唯一のインスタンスは
null
.
メソッドが Null 引数を取る場合、そのメソッドに渡すことができるのは
Null
参照か
null
を直接参照することはできませんが、それ以外の参照は、たとえそれがNULLであっても、(
nullString: String = null
など)。
ただ、どのような場合にこの
Null
を使用すると便利なのでしょうか。
また、Nothing 特性もありますが、これ以上例を見ることはありません。
戻り値の型としてNothingとUnitを使うことの違いがよくわからないのですが、どちらも結果を返さないので、例えばロギングを行うメソッドがある場合、どちらを使うべきかどうやって知ることができるのでしょうか?
戻り値以外の型として、Unit / Null / Nothing を使用する方法はありますか。
どのように解決するのですか?
メソッドが決して戻らない(つまり、戻ることによって正常に完了できず、例外を投げる可能性がある)場合にのみ、Nothingを使用します。Nothingは決してインスタンス化されず、型システムの利益のために存在する(James Iryの言葉を引用。 "Scalaに底値の型がある理由は、型パラメータの分散を表現する能力と結びついています。 ). リンク先の記事より。
Nothingの他の使用法の1つは、決して戻らないメソッドの戻り値の型としてです。 を返すことはありません。考えてみれば、理にかなっています。あるメソッドの戻り値の型が がNothingであり、Nothingのインスタンスが全く存在しない場合、そのようなメソッドは決して戻ってこないはずです。 のインスタンスが存在しない場合、そのようなメソッドは決して戻ってこないはずです。
あなたのロギングメソッドはUnitを返すでしょう。値Unitがあるので、実際に返すことができます。からは API ドキュメント :
<ブロッククオートUnitはscala.AnyValのサブタイプです.型は1つだけです. 型の値は()のみであり,基礎となるランタイムシステムのどのオブジェクトによっても表現されません. で表されることはありません.戻り値がUnit型のメソッドはJavaの メソッドに似ています.
関連
-
[解決済み] Scalaのオブジェクトとクラスの違い
-
[解決済み] マクロから匿名クラスのメソッドを持つ構造型を取得する
-
[解決済み] 依存するメソッドタイプの説得力のある使用例とは?
-
[解決済み] SBTが終了せずに実行を停止する
-
[解決済み] Scalaのパターンマッチはなぜ変数で機能しないのですか?
-
[解決済み] scalaは推論される型の「許容される複雑さ」にどのような制限を設けているのでしょうか?
-
[解決済み] リスト[Option]からNoneを除外するには?
-
[解決済み] Scalaです。ScalaのコレクションにおけるTraversableとIterableの違いは何ですか?
-
[解決済み] sbtの依存関係ツリーを見るには?
-
[解決済み] なぜScalaのimmutable Setは型が共変しないのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ネストした構造体をよりきれいに更新する方法
-
[解決済み] Scalaのforループは下降か減少か?
-
[解決済み] Scalaの配列の初期化
-
[解決済み] scalaは推論される型の「許容される複雑さ」にどのような制限を設けているのでしょうか?
-
[解決済み] リスト[Option]からNoneを除外するには?
-
[解決済み] 単純な case class の順序を定義する簡単な慣用的方法
-
[解決済み] Any、AnyVal、AnyRef、Objectの関係と、Javaコードでのマッピングについて教えてください。
-
[解決済み] sbtの依存関係ツリーを見るには?
-
[解決済み] タイプダイナミックの仕組みと使い方を教えてください。
-
[解決済み] アブストラクトオーバーとはどういう意味ですか?