Tôi muốn xác định một hàm:Làm thế nào để chuyển đổi một số ("") thành Không có trong một dòng?
def convert(x: Option[String]): Option[String] = ...
Khi x
là Some(str)
và str
là trống sau khi cắt tỉa, nó sẽ được chuyển đổi sang một None, nếu không, nó sẽ là một Some
với chuỗi tỉa.
Vì vậy, các trường hợp thử nghiệm sẽ là:
convert(Some("")) == None
convert(Some(" ")) == None
convert(None) == None
convert(Some(" abc ")) == Some("abc")
tôi có thể viết nó như:
def convert(x: Option[String]): Option[String] = x match {
case Some(str) if str.trim()!="" => Some(str.trim())
case _ => None
}
Nhưng tôi hy vọng sẽ tìm thấy một thực hiện đơn giản hơn (một dòng).
Bạn có thiếu một số ký tự dòng mới trong môi trường của mình không? Bạn có được thanh toán tỷ lệ nghịch với số dòng bạn viết không? Lời khuyên của tôi là chỉ sử dụng phiên bản hai dòng và ngừng làm việc cho chính mình :-) – paxdiablo
Tôi chỉ muốn làm cho mã của mình đơn giản và rõ ràng – Freewind
@paxdiablo: Đó là một câu hỏi hợp lệ vì ví dụ thực sự có thể được cải thiện: Mã chạy 'str.trim' hai lần rõ ràng là một cái gì đó để tránh. – Debilski