2011-08-14 7 views
5

Sau khi nghiên cứu ruby ​​khoảng một tháng, tôi quyết định chuyển sang Sinatra. Tôi cần trợ giúp tìm hiểu đoạn trích Sinatra minh họa điều kiện và định tuyến. Ai đó có thể giải thích rõ ràng những gì đang diễn ra theo từng dòng và khối này thực sự ngẫu nhiên hóa lộ trình như thế nào?Điều kiện Sinatra

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 

Trả lời

7

Hành vi chung này sẽ khiến tuyến đường đầu tiên được tải khoảng 10% thời gian và tuyến đường thứ 2 sẽ được tải trong thời gian còn lại.

Tuyến đường đầu tiên sử dụng điều kiện được đặt qua xác suất. xác suất được đặt ở trên sẽ vượt qua giá trị của nó và kiểm tra để xem liệu một số ngẫu nhiên giữa 0-1 có nhỏ hơn giá trị xác suất này hay không. Vì giá trị là 0,1, nó sẽ trả về đúng 10% thời gian.

90% thời gian khác của tuyến đường thứ 2 sẽ được gọi. Các tuyến đường trước đó được ưu tiên, tuyến đường hợp lệ đầu tiên được tìm thấy sẽ được gọi.

Nếu bạn muốn đặt xác suất trong một cài đặt khác, bạn sẽ cần trì hoãn việc đánh giá xác suất với một Proc.

Đọc thêm về các tuyến đường có điều kiện tại đây: http://www.sinatrarb.com/intro#Conditions