كيف يمكن تمرير وسيطين إلى طريقة مع توقيع أحادي الحجة؟

StackOverflow https://stackoverflow.com/questions/1435400

  •  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

كانت هناك بعض الأسئلة هنا في الآونة الأخيرة التي تتعامل مع هذا. أغسطس ليلياس لديه لطيف جدا اكتب حول بعض تعقيدات كل هذا الجنون الياقوت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top