Theo Play 2.0 documentation, khớp mẫu có thể được thực hiện trong một mẫu như vậy:mẫu phù hợp trên object.member trong Chơi 2.0 mẫu
@connected match {
case models.Admin(name) => {
<span class="admin">Connected as admin (@name)</span>
}
case models.User(name) => {
<span>Connected as @name</span>
}
}
Các văn bản giữa các dấu ngoặc sau khi biểu trường hợp được coi là đầu ra (ví dụ HTML) và điều này khá thuận tiện.
Tuy nhiên, khi cố gắng sử dụng một biểu thức trận đấu đó không phải là một biến đơn giản, chẳng hạn như object.member, như thế này:
@album.year match {
case Some(y: Int) => { @y }
case None => { <b>nope</b> }
}
nó kết quả trong một lỗi biên dịch: "')' expected but 'case' found."
Sử dụng defining
để ràng buộc biểu thức thành một biến đơn giản, như sau:
hoạt động, nhưng có vẻ như hơi câm ersome.
Có cách nào phù hợp để sử dụng tính năng đối sánh mẫu này trên các biểu thức liên quan đến đối tượng và thành viên (ví dụ: album.year
) không?
không @ (trận đấu album.year { trường hợp Một số (y: Int) => {} @y trường hợp None => {nope} }) hoặc @ (album.year) phù hợp { trường hợp Một số (y: Int) => {@ y} trường hợp Không có => {nope} } hoạt động? – axaluss
Không, không phải công việc này. Các kết quả đầu tiên trong "bắt đầu dự kiến của định nghĩa", và kết quả thứ hai trong cùng một "')' dự kiến ..." lỗi như trên. – kes
hiện @ {album.year match {case Một số (y: Int) => {@y} case None => {nope}}} hoạt động? – axaluss