У меня есть два решения, но один не компилируется, а другие, я думаю, может быть лучше:Какой самый быстрый идиоматический способ добавить все векторы (в математическом смысле) в список Scala?
object Foo extends App {
val vectors = List(List(1,2,3), List(2,2,3), List(1,2,2)) //just a stupid example
//transposing
println("vectors = " + vectors.transpose.map (_.sum)) //it prints vectors = List(4, 6, 8)
//folding
vectors.reduce {
case (a, b) => (a zip b) map {
case (x, y) => x + y
}
} //compiler says: missing parameter type for exp. function; arg. types must be fully known
}
не является 'PartialFunction', он просто используется для сравнения с шаблоном. – sschaef
Блок с предложениями 'case', используемый без' match', является 'PartialFunction', не так ли? Например, введите это в REPL: {case "a" => true}: PartialFunction [String, Boolean] –
Нет, это не так, это нормальная функция. Просто, когда вы сообщаете компилятору, что вы хотите частичную функцию, вы получите ее. Пример: «Список (1,« str ») map {case s: String => s} ==> MatchError' – sschaef