Scala: существует ли способ использовать PriorityQueue как, я был бы в Java?

Похоже, ты забыл очистить печенье. Попробуйте почистить его следующим способом. Windows.UI.Xaml.Controls.WebView.ClearTemporaryWebDataAsync (); Также проверьте ответ stackoverflow Очистить все куки из WebView

5
задан Joe Holloway 25 April 2009 в 16:18
поделиться

4 ответа

Синтаксис

class PriorityQueue[A <% Ordered[A]] ...

на самом деле просто подслащивание над

class PriorityQueue[A]()(implicit convert: A => Ordered[A]) ...

. Это означает, что вы можете написать свой собственный метод A => Ordered [A]

case class Foo(n: Int)
def orderedFoo(f: Foo): Ordered[Foo] = new Ordered[Foo] {
  def compare(other: Foo) = f.n.compare(other.n)
}

И вручную передайте его в конструктор PriorityQueue

new PriorityQueue[Foo]()(orderedFoo)
9
ответ дан 18 December 2019 в 10:48
поделиться

Функция преобразования A в упорядоченный [A] может играть роль компаратора Java. Функция должна быть видимой только в области, в которой вы создаете PriorityQueue, поэтому она не станет «естественным упорядочением» для вашего объекта.

3
ответ дан 18 December 2019 в 10:48
поделиться

Объединение обоих (правильных) ответов перед этим в компилируемый код:

object o {
  case class Foo(n: Int)
  implicit def orderedFoo(f: Foo): Ordered[Foo] = new Ordered[Foo] {
    def compare(other: Foo) = f.n.compare(other.n)
  }

  val x = new scala.collection.mutable.PriorityQueue[Foo]()
}

Его пример не скомпилируется для вас только потому, что (я полагаю) вы бросили его в компилятор как есть. Вы не можете компилировать методы верхнего уровня в Scala,

2
ответ дан 18 December 2019 в 10:48
поделиться

В scala 2.8.0 PriorityQueue изменяется на

class  PriorityQueue[A](implicit ord : Ordering[A]) 

, а порядок [A] в Scala аналогичен Comparator в Java

2
ответ дан 18 December 2019 в 10:48
поделиться
Другие вопросы по тегам:

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