【发布时间】:2016-06-15 00:31:15
【问题描述】:
我想创建一个函数来检查 Any 类型的变量是否可以迭代。
def checkIterable(v: Any): Boolean = {
// match with something?
}
然后我可以像这样使用它:
if (checkIterable(something)) {
for (s <- something) {
// do something with each element s of something
}
}
对于Array、List、Seq 和 Iterable 类型的变量,这应该返回 true,基本上是任何定义了 foreach 函数的类型(看起来我不应该测试该功能的存在,除非它是唯一可能的方式...)
【问题讨论】:
-
这是有道理的,因为
Array不是Iterable。也许,如果您解释一下您真正想做的事情,而不是从描述一个不起作用的解决方案开始,我们可能会提供更多帮助。 -
检查它的一种方法是使用
v.isInstanceOf[Iterable],但是,正如@Dima 所说,如果您更明确地说明您正在尝试做什么会更好。 -
一开始为什么会有
Any? -
@Dima 我收到了一个
Any,因为我正在从某个地方读取数据,有时这些数据可以被迭代,例如Array或List。我希望能够测试它是否可以迭代,如果可以的话,然后做一些事情。
标签: scala