Tôi có mã đọc một tệp XML. Một số thuộc tính của các phần tử mà tôi cần xử lý là tùy chọn. Tôi đang cố gắng sử dụng Option [T] để quản lý chúng. Tôi đã viết những điều sau đây để dắt các loại NodeSeq trả về bởi các nhà điều hành \
Node:Xử lý các thuộc tính xml tùy chọn trong Scala
class NodeSeqWrapper(nodeSeq: NodeSeq) {
def textOption: Option[String] = {
val text = nodeSeq.text
if (text == null || text.length == 0) None else Some(text)
}
}
implicit def nodeSeqWrapper(nodeSeq: NodeSeq): NodeSeqWrapper =
new NodeSeqWrapper(nodeSeq)
và sau đó gọi nó như thế này:
(node \ "@attr").textOption.getOrElse("Some default value")
Nếu nút có "attr" thuộc tính, mã này làm cho nó có giá trị. Nếu không, giá trị "Một số giá trị mặc định" được trả về.
Làm cách nào để cải thiện điều này? Có cách nào để gấp định nghĩa lớp vào phương pháp ngầm không? Có cách nào tốt hơn để nhận các giá trị thuộc tính "tùy chọn" không? Tôi có đang sử dụng Option[T]
"chính xác" không?
Bạn có thể muốn gọi phương thức 'textOption', theo cùng kiểu với phương thức' '' '' 'và' headOption'. –
Nghe hay đấy. Tôi sẽ thay đổi mã của tôi. Cũng cập nhật câu hỏi. – Ralph