كيف يمكن تمرير وسيطين إلى طريقة مع توقيع أحادي الحجة؟
-
07-07-2019 - |
سؤال
s = Proc.new {|x|x*2}
def one_arg(x)
puts yield(x)
end
one_arg(5, &s)
كيف one_arg
يعرف عن &s
?
المحلول
ال &
يقوم المشغل بتحويل PROC إلى كتلة ، بحيث يصبح طريقة أحذية واحدة مع كتلة (والتي تسمى مع yield
). إذا كنت قد تركت &
بحيث اجتاز PROC مباشرة ، كنت قد حصلت على خطأ.
نصائح أخرى
عن طريق القيام &s
, ، أنت تقول one_arg
أنك تريد بروك الخاص بك s
مرت ككتلة (يرجى تصحيح لي إذا كنت مخطئا). ستكون الكتابة المكافئة
one_arg(5) do |x|
x *2
end
كانت هناك بعض الأسئلة هنا في الآونة الأخيرة التي تتعامل مع هذا. أغسطس ليلياس لديه لطيف جدا اكتب حول بعض تعقيدات كل هذا الجنون الياقوت.
لا تنتمي إلى StackOverflow