Spec-Zone.ru › Pony

ListNode[A: A]

[Source]

Узел в двусвязном списке.

(См. класс collections.List Ponylang для примеров использования.)

Каждый узел содержит четыре поля: два поля ссылки (ссылки на предыдущий и следующий узел в последовательности узлов), одно поле данных и ссылку на список, в котором он находится.

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

Предоставляются дополнительные функции для работы с ListNode как частью связанного списка. Они обеспечивают предварительное добавление, добавление в конец, удаление и безопасное перемещение в обоих направлениях. Класс collections.List Ponylang является правильным способом создания этих элементов. Не пытайтесь создать связанный список, используя только ListNodes.

Пример программы

Функции, проиллюстрированные ниже, — это только те, которые работают с отдельным ListNode.

Вывод:

Мой узел имеет значение элемента: Мой элемент узла Мой узел имеет обновленное значение элемента: Обновленный элемент узла Элемент извлечён из ListNode Элемент узла ListNode отсутствует (None).

  use "collections"
  actor Main
    new create(env:Env) =>

      // Create a new ListNode of type String
      let my_list_node = ListNode[String]("My Node item")
      try 
        env.out.print("My node has the item value: "
                      + my_list_node.apply()?) // My Node item
      end

      // Update the item contained in the ListNode
      try
        my_list_node.update("My updated Node item")?
        env.out.print("My node has the updated item value: "
                      + my_list_node.apply()?) // My updated Node item
      end
      // Pop the item from the ListNode
      try
        my_list_node.pop()?
        env.out.print("Popped the item from the ListNode")
        my_list_node.apply()? // This will error as the item is now None
      else
        env.out.print("The ListNode has no (None) item.")
      end
...


```pony
class ref ListNode[A: A]

Конструкторы

create

[Source]

Создать узел. Изначально он не входит ни в какой список.

new ref create(
  item: (A | None val) = reference)
: ListNode[A] ref^

Параметры

  • item: (A | None val) = ссылка

Возвращает

  • ListNode[A] ref^

Общедоступные функции

apply

[Source]

Возвращает элемент, если он есть, иначе генерирует ошибку.

fun box apply()
: this->A ?

Возвращает

  • this->A ?

update

[Source]

Заменяет элемент и возвращает предыдущий. Генерирует ошибку, если предыдущее значение отсутствует.

fun ref update(
  value: (A | None val))
: A^ ?

Параметры

  • value: (A | None val)

Возвращает

  • A^ ?

pop

[Source]

Удаляет элемент из узла, если он есть, иначе генерирует ошибку.

fun ref pop()
: A^ ?

Возвращает

  • A^ ?

prepend

[Source]

Добавляет узел в начало этого узла. Если that уже находится в списке, он удаляется перед добавлением в начало. Возвращает true, если that был удалён из другого списка. Если ListNode не содержится в списке, добавление в начало завершится неудачей.

fun ref prepend(
  that: ListNode[A] ref)
: Bool val

Параметры

  • that: ListNode[A] ref

Возвращает

  • Bool val

append

[Source]

Добавляет узел в конец этого узла. Если that уже находится в списке, он удаляется перед добавлением в конец. Возвращает true, если that был удалён из другого списка.

Если ListNode не содержится в списке, добавление в конец завершится неудачей.

fun ref append(
  that: ListNode[A] ref)
: Bool val

Параметры

  • that: ListNode[A] ref

Возвращает

  • Bool val

remove

[Source]

Удаляет узел из списка.

ListNode должен находиться в списке для успеха этой операции.

fun ref remove()
: None val

Возвращает

  • None val

has_prev

[Source]

Возвращает true, если есть предыдущий узел.

fun box has_prev()
: Bool val

Возвращает

  • Bool val

has_next

[Source]

Возвращает true, если есть следующий узел.

fun box has_next()
: Bool val

Возвращает

  • Bool val

prev

[Source]

Возвращает предыдущий узел.

fun box prev()
: (this->ListNode[A] ref | None val)

Возвращает

  • (this->ListNode[A] ref | None val)

next

[Source]

Возвращает следующий узел.

fun box next()
: (this->ListNode[A] ref | None val)

Возвращает

  • (this->ListNode[A] ref | None val)

© 2016-2020, The Pony Developers
© 2014-2015, Causality Ltd.
Licensed under the BSD 2-Clause License.
https://stdlib.ponylang.io/collections-ListNode

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API