Предположим, у меня есть функция f: (Int, Int, Int) => String
. Я могу легко применить его к трем параметрам типа Option[Int]
:Как применить функцию к списку параметров в Scala?
def foo(f: (Int, Int, Int) => String,
ox: Option[Int],
oy: Option[Int],
oz: Option[Int]): Option[String] = ox <*> (oy <*> (oz <*> f.curried.some))
Предположим теперь, что мне нужно применить f
к первым трем элементам списка ois: List[Option[Int]]
. Например:
List() => None
List(1.some, 2.some) => None
List(1.some, None, 2.some, 3.some) => None
List(1.some, 2.some, 3.some, 4.some) => Some(f(1, 2, 3))
List(1.some, 2.some, 3.some, None) => Some(f(1, 2, 3))
Как вы его реализуете?
Если четвертый элемент списка None, какой результат вы хотите? С последовательностью вы получаете None. –
@DidierDupont Спасибо. Я был неправ. Для 'List (1. some, 2. some, 3. some, None)' Мне нужно получить 'Some (f (1, 2, 3))'. Я уточню вопрос. – Michael