Chỉ mới bắt đầu trên Diễn viên Scala. Các Scala website nói:Scala Diễn viên: nếu phản ứng không bao giờ trả về, tại sao nó cần phải được trong một vòng lặp {}, và tại sao không trong khi (true) làm việc?
hoạt động Chủ đề chặn có thể tránh được bằng cách sử dụng
react
chờ tin nhắn mới (mặt dây chuyền dựa trên sự kiện củareceive
). Tuy nhiên, có một mức giá (thường là nhỏ) để thanh toán:react
không bao giờ trả lại....
Lưu ý rằng việc sử dụng
react
bên trong một vòng lặpwhile
không hoạt động! Tuy nhiên, vì các vòng lặp phổ biến có hỗ trợ thư viện đặc biệt cho nó ở dạng của một hàmloop
. Nó có thể được sử dụng như thế này:
loop {
react {
case A => ...
case B => ...
}
}
bây giờ tôi đang bối rối - có vẻ là một mâu thuẫn:
a) Nếu react
không bao giờ trở lại, sau đó điểm đặt nó trong một vòng lặp là những gì ?
b) Vì loop
liên tục thực hiện một khối, nó khác nhau như thế nào với while(true)
- tại sao không while
hoạt động và cách "không hoạt động" theo cách nào?
Vì vậy, phần còn thiếu của giải thích trang web Scala là 'phản hồi' không trả về _normally_ nhưng vẫn chấm dứt (có thể thông qua ngoại lệ?) Và được gọi là nhiều lần? – DNA
Tôi không nghĩ đó là một 'phần còn thiếu'. Đó là chi tiết triển khai và không liên quan đến nhà phát triển. Các thông tin liên quan là trong khi (true) không hoạt động. Nếu bạn quan tâm đến các chi tiết bạn có thể xem xét các nguồn, tôi thường làm điều đó để hiểu mọi thứ tốt hơn. – drexin
Nó có thể không liên quan nếu bạn chỉ làm theo công thức, nhưng nó là một trở ngại lớn trong giải thích, cho tôi - cho dù cái gì đó trả về hay không không phải là một chi tiết thực hiện (nếu bạn đang cố gắng lặp lại nó) cơ bản! Tôi đã xem nhanh các nguồn trước khi đặt câu hỏi nhưng tôi sẽ làm theo lời khuyên của bạn để đào sâu hơn một chút ... – DNA