惯用Scala:使用值类型选项映射

时间:2016-09-29 09:32:46

标签: scala

我有一堆实体,我将值存储在地图中。我知道其中一些没有价值。

使用@TargetApi明确表达这一点是不错的做法,还是说Map[Entity, Option[Value]]本身已经具有这些语义?

3 个答案:

答案 0 :(得分:2)

地图使用get方法,该方法已经返回Option,因此这实际上没有必要,并且会混淆地图的类型参数。

答案 1 :(得分:2)

这取决于用例。您可能需要也可能不需要区分“无价值”和“无关键”情景。想象一下,例如,用户的名字和中间名之间的映射。 当密钥存在但值为None时,表示用户没有中间名。如果密钥不存在,则表示您没有该用户的记录。

另一方面,假设您将年份数字映射到2月29日的星期几。在这种情况下,非闰年根本不需要在地图中,并且您可以假设,如果没有密钥,那是因为没有与之关联的值。

答案 2 :(得分:1)

只需使用ViewController.swift:35:10: Instance method 'textFieldDidEndEditing(textField:)' nearly matches optional requirement 'textFieldDidEndEditing' of protocol 'UITextFieldDelegate'

即可

Map[Key, Value]是一种矫枉过正的

对于第二种情况Map[Key, Option[Value]]。您不希望保留值为none的键