[解決済み] Scalaで「20秒」はどのように機能するのか?
2022-06-11 02:39:27
質問
以下はどのようにコンパイルするのでしょうか。
import scala.concurrent.duration._
val time = 20 seconds
実際にはどうなっているのでしょうか?
どのように解決するのですか?
いくつかあるようです。
まず、Scalaでは多くのメソッド呼び出しでドットやペレントを省略することができますので
20 seconds
というのは
20.seconds()
*.
第二に、"暗黙の変換"が適用されます。このため
20
は
Int
であり
Int
には
seconds
メソッドがない場合、コンパイラは
Int
を取り、次のようなものを返す暗黙の変換を探します。
を持つ
a
seconds
メソッドがあり、検索はメソッド呼び出しのスコープによって制限されます。
あなたはインポートした
DurationInt
をスコープに取り込みました。このため
DurationInt
は暗黙のクラスで
Int
パラメータを持つ暗黙のクラスで、そのコンストラクタは暗黙の
Int => DurationInt
変換を行います。
DurationInt
には
seconds
メソッドを持っているので、すべての検索条件を満たしています。したがって、コンパイラはあなたの呼び出しを次のように書き換えます。
new DurationInt(20).seconds
**.
*緩やかな意味です。
20.seconds()
は実際には無効であり
seconds
メソッドにはパラメータリストがなく、そのため空白文字である
は
はメソッド呼び出し時に省略されます。
**実際には、これは正確ではありません。
DurationInt
は値クラスなので、コンパイラは可能であれば整数のラップを避けるからです。
関連
-
[解決済み] Scalaでswitch/case(単純なパターンマッチ)を使うには?
-
[解決済み] GSON JsonObject "Unsupported Operation Exception: null" getAsString
-
[解決済み] Scalaのオブジェクトとクラスの違い
-
[解決済み] self-typesとtrait subclassの違いは何ですか?
-
[解決済み] Scalaのapply関数とは何ですか?
-
[解決済み】関数を定義する "def "と "val "の違いとは?
-
[解決済み】Scalaでリスト内のアイテムを取得する?
-
[解決済み】Scala 2.8 breakOut
-
[解決済み】Scalaで`:_*`(コロン・アンダースコア・スター)は何をするのですか?
-
[解決済み】Scalaはどこでimplicitを探すのか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Spark - アプリの投稿時に「設定にマスターURLが設定されている必要があります」というエラーが発生する
-
[解決済み] java.lang.NoClassDefFoundError: scala/Product$class
-
[解決済み] Sparkです。CoarseGrainedSchedulerが見つかりませんでした。
-
[解決済み] Scalaでsynchronizedを使うには?
-
[解決済み] Scala: スライド(N,N) vs グループ化(N)
-
[解決済み] A の値をキーとして Seq[A] を Map[Int, A] に変換する方法は?
-
[解決済み】ScalaのHigher kinded typeとは何ですか?
-
[解決済み】Scalaのコンテキストとビューバウンドとは何ですか?
-
[解決済み] sbtのScalaTest:タグなしで単一のテストを実行する方法はありますか?
-
[解決済み] Scala:1ステートメントで文字列をファイルに書き込む