سؤال

وكيف يمكنني الحصول على BlockClosure في صرير (أريد استخدام BlockClosure >> callCC)؟

وعندما اكتب [#foo] هذا هو BlockContext، ما هي الصفقة؟

تحديث: لقد عملت إلى أن BlockClosure شيء أساسا من المجمع الجديد

وبدلا من ذلك كيف يمكنني العمل مع الإستمرار على شاطئ البحر؟ أواجه مشاكل، وسيكون موضع تقدير أي أمثلة على ذلك.

ومزيد من التحديث: الغرض من هذا هو عدم استخدام البحر (على الأقل ليس مباشرة) بل لكتابة traversals وهذه أمور أخرى بطريقة أسهل من المتداول بلدي المكررات تتبع الدولة

.
هل كانت مفيدة؟

المحلول

وعادة، مع شاطىء البحر، ولست مضطرا ابدا للتعامل مع الإستمرار نفسك على الإطلاق.

وأنت مجرد استخدام #call: و#answer: من داخل المكونات الخاصة بك.

إذا كنت تحاول أن تفعل شيئا آخر مع Continuation البعض من كتابة تطبيق شاطىء البحر، نلقي نظرة على WAComponent>>call: للحصول على مثال من الاستخدام.

وأو محاولة ذلك. فتح نافذة نسخة. الآن، في مساحة العمل، حدد كل هذا الرمز في وقت واحد وإفعل ذلك:

continuation := nil.
result := Continuation currentDo: [:cc |
   "store the continuation, cc, somewhere for later use"
   continuation := cc.
   1 ].

Transcript show: result.

وسترى 1 المعروضة في إطار نسخة. الآن، في مساحة العمل، القيام به:

continuation value: 2

وبعد ذلك:

continuation value: 3

وسترى كل قيمة يمكنك تمرير إلى continuation المعروضة في نسخة لأن كل قيمة لك لتمرير # VALUE: يسبب سياق استمرار لاستعادة والقيمة الجديدة المخصصة لresult

.

ونأمل أن يساعد ...

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