2014-01-05 44 views
0

如何在集合中表示scala中的空值?如何在scala中表示未初始化的(aka null)映射

等效於列表的將是「無」,它會如下表示:

Nil.asInstanceOf[Map[String,String]] 

什麼是等效地圖?

UPDATE從實驗以及建議的解決方案中我知道的兩個工作解決方案是「Map()」和「null.asInstanceOf(Map [String,String])」。 Map()不是我想要的:我不想要一個空的項目,但實際上並不存在(java中的null)。我已經知道Nil僅用於列表:它旨在說明Map所使用的實體的風格。使用「null.asInstanceOf(..)」不是一個標量語法成語。它似乎沒有等同於Map ..?

+1

「我不想一個空的項目,但實際上是不存在的一個(又名null in java)「在這種情況下,'Nil'不是你想要的列表;它是一個空列表,與List()和List.empty完全一樣。 –

+0

這取決於接收API的期望。 – javadba

+0

不,它沒有。你的API可以將'Nil'和'null'視爲等價的,但它不能以不同的方式處理'Nil'和一個空列表(因爲'Nil''只是一個空列表)。 –

回答

7

Nil只是一個空的List。這與null無關。

斯卡拉擁有null,就像Java一樣,但幾乎總是可以避免的。

你的實際目標是什麼?

你想要一個空的地圖嗎?

val m = Map[String,String]() 

或者一個空的可變的地圖,可以添加到?

val m = collection.mutable.Map[String,String]() 

Option[Map]以後可以初始化?

val m: Option[Map[String,String]] = None 

或者實際上是一個null

var m: Map[String,String] = null 
+0

看起來像空作品,就像空白地圖一樣。 – javadba

10

,最好的辦法做,它是:

val x = Map.empty[String, String] 

隨着可變地圖:

import scala.collection.mutable.{ Map => MMap } 

val y = MMap.empty[String, String]