如何使用「匹配」語句來識別類變量的值?以下是無效的,我無法找到一個可接受的變種 - 比如果其他...否則,如果...否則...如何在Scala「匹配」語句中匹配類?
val c: Class[_] = classOf[Int]
val what = c match { case classOf[Int] => "int!"; case classOf[Float] => "float!" }
編譯器會抱怨:error: not found: type classOf
,當然還有,我不能使用Class[Int]
,因爲這種類型的信息將被刪除:
c match { case Class[Int] => "int!"; case Class[Float] => "float!" }
error: type Class of type Class does not take type parameters.
我也試着像變種Int.class
,都無濟於事。 (我並不想轉換爲字符串:我覺得讓編譯器捕獲重命名/移動類是很重要的。)
我是密集的,還是我偶然發現了一個Scala盲點?
好了,下面的答案的答案正確的(和感謝! ),但它越來越顯得這是Scala中的一種醜陋的洞。類是單身人士,所以你沒有理由必須將它們分配給變量以便高效地匹配它們 - 也不要訴諸使用級聯的ifs,寫成守衛或單獨的語句。但顯然是這樣。 – Tim