Функция Rebol и неограниченное количество аргументов

Кажется, что функция do в rebol принимает неограниченное количество аргументов. Могу ли я сделать это с помощью моей собственной функции (без использования блока аргументов)?


person Rebol Tutorial    schedule 24.08.2009    source источник


Ответы (2)


Невозможно определить функцию с переменным количеством аргументов. Последнее сообщение в этой ветке списка рассылки Rebol http://www.rebol.org/ml-display-thread.r?m=rmlDTXB имеет объяснение.

Также функция do принимает единственный аргумент:

>> ? do
USAGE:
    DO value /args arg /next 

DESCRIPTION:
     Evaluates a block, file, URL, function, word, or any other value.
     DO is a native value.

ARGUMENTS:
     value -- Normally a file name, URL, or block (Type: any)

REFINEMENTS:
     /args -- If value is a script, this will set its system/script/args
         arg -- Args passed to a script. Normally a string. (Type: any)
     /next -- Do next expression only.  Return block with result and new position.
person Peter W A Wood    schedule 14.09.2009

Вы правы, что в REBOL есть вариативные функции, например, функция DO. В R2 даже функция MAKE является вариативной. Тем не менее, диалект спецификации функций не позволяет вам определять вашу собственную вариативную функцию, и такая функция даже не планируется.

person Ladislav    schedule 25.07.2010
comment
Rebol должен быть более выразительным, чем другие языки, поэтому неприятно не иметь возможности сделать это или иметь дополнительные параметры. C # 4 теперь, по крайней мере, реализовал это davidhayden.com/blog / dave / archive / 2009/06/02 / Я не дизайнер rebol, я просто пользователь, но как пользователь я знаю, что мне действительно нужно для продуктивной работы, и это одна из вещей Я тоже с нетерпением жду. Или, по крайней мере, должна быть возможность подключить консоль для создания нашей собственной обработки синтаксиса, но это тоже невозможно. - person Rebol Tutorial; 25.07.2010
comment
Консоль - это жемчужина ребола, жаль, что ее нельзя легко настроить с помощью некоторых хуков, которые делают wordpress успешным - хотя wordpress не является языком программирования, я имею в виду, что принцип является ключевым. - person Rebol Tutorial; 25.07.2010
comment
Ошибочно сравнивать REBOL ‹code› f 1 2 3 ‹/code›, например, с C ‹code› f (1, 2, 3) ‹/code›. Фактически, если вы используете такой же сложный синтаксис, как и в C, вы можете делать в REBOL все, что захотите, используя ‹code› f [1 2 3] ‹/code›, который в REBOL на самом деле является только унарным вызовом, нет независимо от того, сколько аргументов вы поместите в блок. Используя этот синтаксис, вы можете легко обнаружить, что у вас на самом деле гораздо более высокая выразительность, чем в C, поскольку ни порядок, ни количество, ни какое-либо другое свойство аргумента не ограничено. - person Ladislav; 26.07.2010
comment
это 4 KEYPRESS двумя руками :) Это наиболее важно в вопросе доступности, когда вы используете консоль в качестве GUI конечного пользователя. - person Rebol Tutorial; 27.07.2010
comment
Я не использую консоль для написания скриптов REBOL. Вместо этого я использую некоторые текстовые редакторы для этой цели. - person Ladislav; 01.08.2010
comment
И мне очень любопытно, какую раскладку клавиатуры вы используете, учитывая, что ваше примечание не относится к раскладке для США. - person Ladislav; 01.08.2010