استخدام في العالم الحقيقي للكائنات ملزمة في روبي
-
05-07-2019 - |
سؤال
والليلة الماضية، كنت أفكر في ما أعتقد هي ميزات متقدمة لغة روبي، وهي الإستمرار (callcc) والأشياء ملزم. أعني متقدمين لأن لدي س س كتبته بشكل ثابت langages الخلفية (C #، جافا، C ++)، اكتشفت روبي مؤخرا جدا، لذلك هذه الميزات اللغة ليست مألوفة جدا بالنسبة لي.
وأنا أتساءل ما يمكن أن يكون استخدام في العالم الحقيقي من هذه الميزات langages. في تجربتي، ويمكن أن يتم كل شيء مع langages س س كتبته بشكل ثابت، لكنني توافق على عدم بذكاء جدا في بعض الأحيان. أعتقد أنني أحسب الجمال / الفائدة من استمرار قراءة هذا المقال لطيفة من سام روبي: <لأ href = "http://www.intertwingly.net/blog/2005/04/13/Continuations-for-Curmudgeons" يختلط = "noreferrer"> http://www.intertwingly.net/blog/2005/04/13/Continuations-for-Curmudgeons
ومع ذلك، أنا فقدت مع كائن ربط. يمكن للشخص تقدم لي مع بعض الأمثلة في العالم الحقيقي للشيء الذي يمكن القيام به بذكاء مع ربط الكائن ولكن ليس جدا بذكاء مع langages في عداد المفقودين مفهوم ربط روبي؟
وكنت أفكر في rollbacking بعض الكائنات إلى حالته الأولية عندما سارت الامور بشكل سيء خلال عملية رونينغ طويلة، ولكن لست متأكدا من هذا يمكن تنفيذها مع كائن ربط وأعتقد يمكن تنفيذها بذكاء تماما من استنساخ كائنات قبل تجهيز واستبدال كائن تم تعديلها مع الحيوانات المستنسخة الخاصة بهم عندما سارت الامور بشكل سيء أثناء معالجة. وهذا ليس مثالا صالحا على ما أعتقد.
وشكرا مقدما لمساعدتكم.
المحلول
ولقد استعملت الطبقة ملزمة لتنفيذ التصحيح الإختراق.
class Array
def debug binding
each do |arg|
puts "arg = #{eval(arg, binding).inspect}"
end
end
end
ويمكنك استخدام هذا لتفقد قائمة قصاصات من التعليمات البرمجية روبي جنبا إلى جنب مع ما مقتطف كل من العوائد:
# .. some hairy code you want to debug ...
['user','current_resource', 'user.owns?(current_resource)'].debug(binding)
والتي ستطبع
user = #<User id:1, username: 'joe', ...
current_resource = #<Comment id:20, ...
user.owns?(current_resource) = false
وأجد أنه من المفيد جدا للتصحيح سريع.
وأنا في حاجة إلى استخدام كائن ملزمة للاستيلاء على نطاق حيث يسمى debug
لذلك يمكن استخدامها في eval
عند تشغيل debug
. ربما يكون هناك طرق أخرى للنفذت هذا لكن باستخدام الربط كان من السهل والسريع. وهناك أيضا أمثلة على الأرجح أفضل بكثير من ما هي كائنات ملزمة مفيدة ل...
نصائح أخرى
وربط كائنات مفيدة عندما تريد تقييم قوالب ERB.
ونلقي نظرة على http://www.seaside.st/ ، انها تطبيقات الويب من Smalltalk إطار العمل. ويستخدم على نطاق واسع استمرارا. أفضل مثال العالم الحقيقي على كيفية استخدامها، وهذا هو CMS http://www.cmsbox.com/en / سم