Scalastyle (IntelliJ 2016,1 giá trị mặc định) cho biết biểu thức boolean này có thể được đơn giản hóabiểu Scalastyle Boolean có thể được đơn giản hóa
val t = Option(true)
val f = Option(false)
if(t.contains(true) && f.contains(false)) {
println("booop")
}
tôi có thể thoát khỏi điều này bằng cách thay đổi nếu để:
if(t.contains(true).&&(f.contains(false)))
Hoặc bởi thay đổi & & đến &
Nhưng không thực sự thấy cách đơn giản hóa nó, ai cũng có thể khám phá n chuyện gì vậy?
Cập nhật Nó dường như không liên quan đến nếu các vals được biết lúc biên dịch hoặc chúng được xác định cục bộ. Các mã sau đây cũng có được là cảnh báo rằng biểu thức có thể được simplfied:
object TestFoo {
def bar(t: Option[Boolean]) = {
val f = Option(scala.util.Random.nextBoolean)
if (t.contains(true) && f.contains(false)) println("booop")
}
def main(args: Array[String]) = bar(t = Option(scala.util.Random.nextBoolean))
}
Tôi chỉ không được làm thế nào tôi là nghĩa vụ phải làm cho rằng bất kỳ đơn giản hơn, là có một số lựa chọn kỳ lạ [Boolean] so sánh tôi bỏ lỡ?
Tôi nghĩ rằng vì bạn đang tuyên bố những giá trị và chỉ sử dụng chúng ở đó, nó chờ đợi bạn trong-line những giá trị trong câu lệnh 'if' của bạn – hasumedic
Không giống như nơi các biến được xác định hoặc nếu giá trị được biết tại các vấn đề thời gian biên dịch. Cập nhật với một ví dụ khác – klogd
Điều gì sẽ xảy ra khi bạn sử dụng ký hiệu infix? ví dụ. '(t chứa true) && (f chứa false)' – hasumedic