Có,Làm thế nào để vượt qua một hoặc không có biến arg trong scala?
def test(args: Any*) = args.size
Tôi muốn gọi nó với danh sách đối số rỗng tùy thuộc vào điều kiện, nhưng tránh if/else.
Tôi đã đi ra với giải pháp này:
test(List("one").filter(_ => condition) : _*)
Có cách tốt hơn thế này?
Đối với bối cảnh nhiều hơn, tôi đang chơi với Play 2.0 scala, và có điều này:
user => Redirect(routes.Application.index).withSession("username" -> user._1).withCookies(
List(Cookie("rememberme", Crypto.sign(user._1) + "-" + user._1)).filter(_ => user._3) : _*)
nơi user._3
là boolean rembemberme.
Tôi không muốn gọi vớiSession hoặc gọi nó với danh sách đối số trống (không phải để tạo nhanh Cookie) nếu rememberme là sai, theo cách scala.
Cảm ơn bạn.
Cảm ơn bạn, tôi đồng ý đây là sạch nhất, và tôi thực sự không muốn tránh nếu/else, nhưng tránh danh sách instantiating, vì vậy tôi chỉ thiếu Seq.empty hoặc Nil, vì vậy câu trả lời thứ hai cũng hữu ích :) – avalez
@alavez nếu mục tiêu của bạn là để tránh instantiating một Danh sách, đây là một thất bại lớn, bởi vì đó chính xác là những gì 'Seq' làm! Bạn tránh nó bằng cách gán một phần trước withCookies với 'val t', sau đó gọi' if (user._3) t.withCookies (...) else t.withCookies() '. Biến tạm thời là tốt! –
Cảm ơn bạn đã bình luận. Tôi có nghĩ rằng việc sử dụng Nil sẽ tránh được danh sách instantiating không? Và chỉ để hiểu rõ hơn, Seq.empty bằng cách nào đó tốt hơn hay tệ hơn Nil? – avalez