Trong 'Lập trình trong Scala, Second Edition' tại trang 410 bạn có thể tìm lớp Simulation mà có phương pháp sau đây:Liệu có ý nghĩa gì khi sử dụng tính năng khớp mẫu trong Scala với các trường hợp thực sự đơn giản?
private def next() {
(agenda: @unchecked) match {
case item :: rest =>
agenda = rest
curtime = item.time
item.action()
}
}
tôi tò mò tại sao Odersky thực hiện điều này với mô hình phù hợp chứ không phải chỉ như thế :
private def next() {
val item = agenda.head
agenda = agenda.tail
curtime = item.time
item.action()
}
Mô hình có khớp với hiệu quả đến mức không quan trọng? Hoặc đó không phải là một ví dụ hoàn hảo?
mô hình phù hợp với phiên bản sẽ ném MatchException nếu mô hình không phù hợp – gerferra
@gerferra: Tôi đứng sửa chữa. Nhưng phiên bản phù hợp với mẫu ở mọi tốc độ đều có một sửa chữa đơn giản. Tôi sẽ cập nhật câu trả lời. –
Các phiên bản khác cũng có một sửa chữa đơn giản: hoặc bọc trong 'if (! Agenda.isEmpty)', hoặc sử dụng 'agenda.headOption.foreach {item => agenda = agenda.tail; curtime = item.time; item.action()} ' –