создание функции, которая принимает функцию в качестве параметра и вызывает ее для каждого элемента связанного списка

Попробуйте использовать .live() вместо .bind(); .live() свяжет .hover с вашим флажком после выполнения запроса Ajax.

0
задан Zach Lyness SonicEX 28 March 2019 в 00:46
поделиться

2 ответа

Этот тип задачи лучше всего выполнять с (хвостовой) рекурсией (также никогда не используйте var, если вы не полностью уверены, что вам это нужно ... а также, null также чего следует избегать, используйте вместо этого Option):

case class Node[A](value: A, next: Option[Node[A]]) {
   @tailrec
   final def calleachnode(f: A => Unit): Unit = {
     f(value)
     next match {
       case Some(next) => next.calleachnode(f)
       case None => ()

     }
   }
 }
0
ответ дан Dima 28 March 2019 в 00:46
поделиться

Вот 3 возможности, которые используют Algebraic Data Types (ADT).

Сначала object-oriented:

sealed trait LinkedListNode[A] {
  def calleachnode(inputfunction : A => Unit): Unit 
}

case class BranchNode[A](value:A, next: LinkedListNode[A]) extends LinkedListNode[A] {
  def calleachnode(inputfunction : A => Unit): Unit = {
    inputfunction(value)
    next.calleachnode(inputfunction)
  }
}

case class LeafNode[A](value:A) extends LinkedListNode[A] {
  def calleachnode(inputfunction : A => Unit): Unit = {
    inputfunction(value)
  }
}

Или, если вы предпочитаете, вы можете использовать сопоставление с образцом:

sealed trait LinkedListNode[A] {

  def calleachnode(inputfunction : A => Unit): Unit = this match {
    case BranchNode(value, next) => 
        inputfunction(value)
        next.calleachnode(inputfunction)
    case LeafNode(value) =>
        inputfunction(value)
  }
}

case class BranchNode[A](value:A, next: LinkedListNode[A]) extends LinkedListNode[A]

case class LeafNode[A](value:A) extends LinkedListNode[A]

Вы можете проверить эти решения с помощью:

[112 ]

Теперь более functional способ использовать ADT:

sealed trait LinkedListNode[A] 

case class BranchNode[A](value:A, next: LinkedListNode[A]) extends LinkedListNode[A]

case class LeafNode[A](value:A) extends LinkedListNode[A]


def calleachnode[A](listNode: LinkedListNode[A], inputfunction : A => Unit): Unit = listNode match {
  case BranchNode(value, next) => 
    inputfunction(value)
    calleachnode(next, inputfunction)
  case LeafNode(value) =>
    inputfunction(value)
} 

Тест выглядит немного иначе:

val lln = BranchNode(12, LeafNode(2))
calleachnode[Int](lln, (i) => println(i * 2)) 
0
ответ дан pme 28 March 2019 в 00:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: