Tôi đang viết một hàm nhận một số giá trị String
tùy chọn và chuyển đổi từng giá trị thành Int
hoặc Boolean
rồi chuyển giá trị được chuyển đổi sang Unit
để xử lý tiếp. Nếu bất kỳ chuyển đổi nào bị lỗi, toàn bộ chức năng sẽ không thành công với lỗi. Nếu tất cả chuyển đổi thành công, hàm sẽ xử lý các giá trị được chuyển đổi và trả về thành công.Chuyển đổi nhiều giá trị tùy chọn trong Scala
Dưới đây là chức năng tôi đã viết (giản thể từ thực tế):
f(x: Option[String], y: Option[String], z: Option[String]): Result = {
val convertX = x.map(value => Try(value.toInt))
val convertY = y.map(value => Try(value.toBoolean))
val convertZ = z.map(value => Try(value.toBoolean))
val failuresExist =
List(convertX, convertY, convertZ).flatten.exists(_.isFailure)
if (failuresExist) BadRequest("Cannot convert input")
else {
convertX.foreach {
case Success(value) => processX(value)
case _ =>
}
convertY.foreach {
case Success(value) => processY(value)
case _ =>
}
convertZ.foreach {
case Success(value) => processZ(value)
case _ =>
}
Ok()
}
}
Mặc dù giải pháp này có thể sẽ làm việc, nó là rất khó xử. Làm thế nào tôi có thể cải thiện nó?
đối với làm việc, mã có khả năng có thể làm tốt thêm tôi nghĩ rằng một nơi tốt đẹp hơn là http://codereview.stackexchange.com/ Trong trường hợp nó không hoạt động, bạn có thể giải thích vấn đề theo ý kiến của bạn không? –
@ GáborBakos Đây là một câu hỏi khá cụ thể về những gì có vẻ là một phương pháp mất tích. Tôi nghĩ ở đây ổn. –
Tôi không rõ ràng, tôi đang viết một bộ điều khiển cho một ứng dụng Play. Có (hiện tại) 3 tham số truy vấn tùy chọn mà tôi cần xử lý. Tôi thà làm tất cả trong một cuộc gọi vì chúng có liên quan. – Ralph