Как объявить массив определенного типа в Ruby Documentor?

Я хотел бы объявить массив объектов с точным классом объекта в rubydoc либо для параметра, либо для переменной, либо для @return. (это должен быть RDoc? ..)

Основная причина, по которой RubyMine (или другая IDE) правильно работает для автозаполнения, интерактивных методов, рефакторинга и т. д.

В PHP будет выглядеть так:

/**
 * @param array $items
 * @param Filter[] $filters
 * @return Result[]
 */
function filter($items, $filters) {}

Я просто не уверен, может ли это работать аналогичным образом в RubyMine:

##
# @param [Array] items
# @param [Filter[]] filters
# @return [ResultClass[]]
#
def filter(items, filters); end

Дополнительный пример на PHP:

class My
{
    public $name;
}

/**
 * @return My[]
 */
function foo()
{
      // Similar code here
      //return [new My(), new My()];
}

function show()
{
    foreach (foo() as $item) {
        // IDE will make autocomplete for My::$name
        echo "$item->name\n";
    }
}

IIRC, @return [Array<My>] должен работать.

Stefan 03.09.2018 14:52
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
0
1
522
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
class TheClass
  # @param items   [Array]
  # @param filters [Array<Filter>]
  # @return        [Array<TheClass>]
  def filter(items, filters); end
end

Как указано в документации Ярлыки.

я прав, # @param filters [Filter] в вашем примере означает просто filters == Filter?

Kirby 03.09.2018 16:00

@Kirby имеет следующую форму: [@param] [имя параметра функции] [тип параметра функции]

Andrey Deineko 03.09.2018 16:02

И, чтобы уточнить, в @return это означает [TheClass.new, TheClass.new, ...], не так ли?

Kirby 03.09.2018 16:02

@Kirby означает массив экземпляров TheClass

Andrey Deineko 03.09.2018 16:03

@param name type - это абсолютно понятно. Я имею в виду, что в моем примере фильтры предполагают массив с объектами Filter.

Kirby 03.09.2018 16:05

@AndrewDeineko, хорошо, понял. Это определенно то, что мне нужно. Спасибо!

Kirby 03.09.2018 16:05

@Kirby Я неправильно понял, если filters - это массив, то он должен быть @param filters [Array]. Я думаю, вы можете указать класс этих объектов с помощью @param filters [Array<Filter>]

Andrey Deineko 03.09.2018 16:07

Другие вопросы по теме