Список скала складной


Я пытаюсь выучить скала. Это тяжело.

В настоящее время у меня есть дерево в форме

class Node(children:List[Node], value:Int){

}

Я хочу, чтобы вычислить общую стоимость определяется стоимость + сумма totalcost в детей. Мой Java-фон заставил меня сделать это:

def totalCost() {
  var total = value
  for (child <- children){
    total = total+child.totalCost
  }
  return total
}

теперь я знаю, что я должен быть складной или уменьшения, но не выходит. Может некоторые из вас в помощники, дайте мне руку здесь?



265
2
задан 22 июля 2011 в 07:07 Источник Поделиться
Комментарии
2 ответа

Там уже есть сумма функции:

def totalCost = value + children.map(_.totalCost).sum

7
ответ дан 23 июля 2011 в 09:07 Источник Поделиться

Слева-фолд слишком элегантное решение:

class Node (children:List[Node], value:Int) {
def totalCost : Int = (value /: children) (_ + _.totalCost)
}

1
ответ дан 23 июля 2011 в 05:07 Источник Поделиться