Сгенерированы лямбда и proc

#ruby #lambda

#ruby #лямбда

Вопрос:

Я читал о Proc в ruby на https://ruby-doc.org/core-2.3.1/Proc.html

 lambda(amp;lambda {}).lambda?   #=> true
proc(amp;lambda {}).lambda?     #=> true
Proc.new(amp;lambda {}).lambda? #=> true

lambda(amp;proc {}).lambda?     #=> false
proc(amp;proc {}).lambda?       #=> false
Proc.new(amp;proc {}).lambda?   #=> false
  

И я почти не понимаю, почему все результаты — это они. Если у вас есть какие-либо идеи. Пожалуйста, помогите мне!

Ответ №1:

Это сказано прямо над кодом, который вы процитировали:

lambda , proc и ::new сохраняет трюки Proc объекта, заданного amp; аргументом.

В первых трех примерах вы создаете Proc using lambda {} ; таким образом, это лямбда. Перенос его не меняет; .lambda? есть true .

Во вторых трех примерах вы создаете Proc using proc {} ; таким образом, это не лямбда. Перенос его не меняет; .lambda? есть false .

Комментарии:

1. Итак, почему перенос lambda / proc не меняет его?

2. Вам нужно будет спросить людей, которые его разработали.

3. Хорошо! Спасибо за вашу помощь