سؤال

هل هناك ما يعادل C++ طريقة istream::putback(char) بالنسبة OCaml?

كيف يمكنني إضافة حرف إلى بداية ستدين?

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

المحلول

لا يمكنك أن تفعل ذلك مع in_channel أو مع Stream.t.وإليك بعض الاقتراحات:

  1. إذا كنت تضع تعود شخصية كنت قد قرأت ، قد ترغب في استخدام استخدام peek دراسة تيار بدلا من إزالة عنصر.

  2. قد يكون لديك بعض الحظ كتابة C-واجهة على أن وظيفة مباشرة.أستطيع أن أرى هذا يجري فكرة سيئة حقا.

  3. هل تعتبر استخدام البطاريات بدلا من ذلك ؟

  4. كتابة وحدة حول المهام الحالية مع نوع سحاب أو كومة أو الهيكل الذي يسمح دفع الشخصيات مرة أخرى.

نصائح أخرى

وشملت بطاريات

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

وأساسا: لا يمكنك. بطاريات (وExtlib) توفر تعزيز المجمع I / O، ولكن لم يستطع أي منهما دعم هذه المهمة.

ويمكنك، ومع ذلك، محاكاته مع أي بطاريات أو Extlib إذا كنت على استعداد للقيام يقرأ الوحيد على مستوى الطابع، بو التفاف تيار I / O في <لأ href = "HTTP: //ocaml-extlib.googlecode كوم / إس في / وثيقة / apiref / Enum.html "يختلط =" نوفولو noreferrer "> التعداد (و<لأ href =" http://thelema.github.com/AAA-batteries/hdoc/BatEnum.html "يختلط =" noreferrer نوفولو "> BatEnum مع البطاريات). يوفر التعداد تعداد العام مع نوع "الحصول على القيمة التالية" من واجهة، ويسمح لك لدفع القيم مرة أخرى إلى واجهة التعداد. حتى تتمكن من التفاف ستدين في التعداد من نوع char Enum.t التي ترجع الأحرف مع وظيفة Enum.next لها، ومن ثم استخدام Enum.push لدفع الشخصيات غير المرغوب فيها مرة أخرى إلى أمامه.

قد يكون من الممكن بعد ذلك لإعادة الختامية مثل هذا التعداد مع IO ( BatIO ) عن واجهة أكثر مرونة، إذا كنت التحقق أولا من أن هذه الوحدات لا يؤدون التخزين المؤقت الداخلية التي من شأنها أن تصل الفوضى دلالات دفع حرفا.

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