Я видел формальные аргументы, упомянутые в ruby, есть ли где-нибудь объяснение, что они именно - PullRequest
2 голосов
/ 20 сентября 2011

Я ищу хорошее объяснение того, что означает этот термин

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011

В программировании формальные аргументы (также известные как «формальные параметры») - это аргументы, которые функция ожидает получить и присваивает имена. Это аргументы, которые обычно действуют аналогично локальным переменным и явно указаны в определении функции. Например, в этом методе:

def say(words, options)
    options[:repetitions].times { puts words }
    puts "that's all folks!" unless options[:no_footer]
end

Формальными аргументами являются words и options. Есть также некоторые неофициальные аргументы, а именно repetitions и no_footer. Семантически мы понимаем, что это аргументы функции, но они не являются формальными аргументами.

В формальных аргументах нет ничего конкретного для ruby, но есть определенное значение. В ruby, и особенно в Rails, многие методы имеют только несколько формальных аргументов (и много неформальных аргументов). Например, в этом вызове:

redirect_to :action => 'show', :id => @entry.id

Метод получения действительно имеет только один формальный аргумент, хэш опций.

Стоит также отметить, что «формальные аргументы» часто противопоставляются «фактическим аргументам». Фактические аргументы - это просто значения, которые действительно передаются. Так, например, в этом вызове,

say "I love ruby", :repetitions => 10, :no_footer => true

Фактическими аргументами являются "I love ruby" и {:repetitions => 10, :no_footer => true}, и они отображаются на формальные аргументы, приведенные выше, words и options.

1 голос
/ 20 сентября 2011
var1, var2 = 123, 456

# arg1 and arg2 are formal arguments of some_method
# They are defined in the method signature and can be used to
# refer to the actual arguments used to call this method
def some_method(arg1, arg2)
  puts arg1 + arg2
end

# var1 and var2 are the actual arguments used to call some_method
some_method var1, var2

Вы можете заметить, что это не какая-то особенность Ruby, но распространенная модель в языках программирования более высокого уровня.

...