2011-08-14 15 views
5

लगभग एक महीने तक रूबी का अध्ययन करने के बाद, मैंने सिनात्रा जाने का फैसला किया। मुझे सिनात्रा स्निपेट को समझने में मदद की ज़रूरत है जो परिस्थितियों और रूटिंग को दर्शाती है। क्या कोई स्पष्ट रूप से समझा सकता है कि रेखा-रेखा पर क्या चल रहा है और यह ब्लॉक वास्तव में मार्ग को यादृच्छिक कैसे बना रहा है?सिनात्रा स्थितियां

set(:probability) { |value| condition { rand <= value } } 

    get '/win_a_car', :probability => 0.1 do 
    "You won!" 
    end 

    get '/win_a_car' do 
    "Sorry, you lost." 
    end 

उत्तर

7

इस के समग्र व्यवहार पहले मार्ग समय का लगभग 10% लोड करने के लिए और 2 मार्ग समय के बाकी लोड किया जाएगा कारण होगा।

पहला मार्ग संभाव्यता के माध्यम से एक शर्त सेट का उपयोग करता है। उपरोक्त संभावना सेट यह देखने के लिए अपना मूल्य और परीक्षण पास करेगी कि 0-1 के बीच एक यादृच्छिक # इस संभावना मूल्य से कम है या नहीं। चूंकि मान 0.1 है, यह समय के 10% सही होगा।

दूसरे मार्ग के दूसरे 90% को बुलाया जाएगा। पहले के मार्ग प्राथमिकता लेते हैं, पाए गए पहले वैध मार्ग को बुलाया जाएगा।

यदि आप किसी अन्य सेटिंग में संभावना सेट करना चाहते हैं, तो आपको प्रोसेस के साथ संभावना के मूल्यांकन को स्थगित करना होगा।

यहां सशर्त मार्गों पर और पढ़ें: http://www.sinatrarb.com/intro#Conditions

संबंधित मुद्दे