2013-07-26 4 views

ответ

50
scala> List("Mary", "had", "a", "little", "lamb").indexOf("little") 
res0: Int = 3 

Вы можете попробовать чтение в следующий раз scaladoc for List. ;)

+1

'.indexOf' также работает для Array –

28

Если вы хотите список всех индексов, содержащих "а", а затем:

val ls = List("Mary", "had", "a", "little", "lamb","a") 
scala> ls.zipWithIndex.filter(_._1 == "a").map(_._2) 
res13: List[Int] = List(2, 5) 
+16

Интересно! Я думаю, что для этого является _collect_: 'ls.zipWithIndex.collect {case (" a ", i) => i}' – DaoWen

25

Если вы хотите найти предикатом, используйте .indexWhere(f):

val ls = List("Mary", "had", "a", "little", "lamb","a") 
ls.indexWhere(_.size <= 3) 

Это возвращает 1, поскольку «было» - это первое слово с не более чем тремя буквами.

Смежные вопросы