以下是引用自文档:选择此可遍历集合的第一个元素。注意:除非基础集合类型是有序的,否则不同的运行可能返回不同的结果。返回:此可遍历集合的第一个元素。抛出:NoSuchElementException -如果可遍历集合为空。看起来很奇怪。什么时候可以返回不同的结果?调用myMap.head两次安全吗?
myMap.head
e1xvtsh31#
不知道你用的是哪个版本的scala,scala 2.12,that trait was removed之后。Scala 2.13集合库中最重要的变化是:
scala 2.12
Traversable
Iterable
X1 E1 F1 X可以帮助你。下图显示了scala.collection包中的所有集合。这些都是高级抽象类或trait,通常具有可变和不可变的实现。x1c 0d1x的数据Traversable是一个提供接口的抽象。然后你有一个具体的实现,其中并不是所有的元素都保持顺序。一旦构建了集合,你可以使用head方法请求第一个元素(记住,如果集合为空,则此方法会抛出异常,同时headOption将始终返回一个值)。如果您不止一次向不可变集合请求第一个元素,它将始终返回相同的值。在可变集合中,它并不总是为真。那个方法的医生说创建此可遍历集合的第一个元素。
scala.collection
head
headOption
注意:不同的运行可能会返回不同的结果,除非底层集合类型是有序的。返回:此可遍历集合的第一个元素。抛出:NoSuchElementException -如果可遍历集合为空。
当它说“might return different results for different runs”时,意味着如果您运行应用程序两次,如果底层集合没有排序,则每次运行的结果都可能不同。
1条答案
按热度按时间e1xvtsh31#
不知道你用的是哪个版本的scala,
scala 2.12
,that trait was removed之后。Scala 2.13集合库中最重要的变化是:
Traversable
不再存在,只有Iterable
。X1 E1 F1 X可以帮助你。
下图显示了
scala.collection
包中的所有集合。这些都是高级抽象类或trait,通常具有可变和不可变的实现。x1c 0d1x的数据
Traversable
是一个提供接口的抽象。然后你有一个具体的实现,其中并不是所有的元素都保持顺序。一旦构建了集合,你可以使用head
方法请求第一个元素(记住,如果集合为空,则此方法会抛出异常,同时headOption
将始终返回一个值)。如果您不止一次向不可变集合请求第一个元素,它将始终返回相同的值。在可变集合中,它并不总是为真。那个方法的医生说
创建此可遍历集合的第一个元素。
注意:不同的运行可能会返回不同的结果,除非底层集合类型是有序的。
返回:此可遍历集合的第一个元素。抛出:NoSuchElementException -如果可遍历集合为空。
当它说“might return different results for different runs”时,意味着如果您运行应用程序两次,如果底层集合没有排序,则每次运行的结果都可能不同。