Tôi đang tìm một giải pháp để kiểm tra nếu giá trị của bất kỳ loại nào trống (hoặc mặc định). I E. một số loại phương pháp trên Any
mà kiểm tra nếu một trường hợp String
bằng ""
, một Int
- để 0
, một Float
- để 0f
, một Boolean
- để false
, một List
không chứa các mặt hàng và vân vân với nhiều loại khác. Primarilly Tôi quan tâm cho dù một số giải pháp đã tồn tại trong thư viện chuẩn và nếu không làm thế nào bạn sẽ thực hiện nó. Tôi tin rằng điều này có thể hữu ích và nếu nó không tồn tại trong thư viện chuẩn, nó nên được đề xuất.Thử nghiệm trên giá trị trống phổ dụng cho tất cả các loại
Trả lời
Sử dụng Zero
loại lớp từ Scalaz.
scala> import scalaz._, Scalaz._
import scalaz._
import Scalaz._
scala> def isEmpty[A : Zero](value: A) = value == mzero[A]
isEmpty: [A](value: A)(implicit evidence$1: scalaz.Zero[A])Boolean
scala> isEmpty("")
res0: Boolean = true
scala> isEmpty(List())
res1: Boolean = true
scala> isEmpty(false)
res2: Boolean = true
scala> isEmpty("O HAI")
res3: Boolean = false
Link to a blog post của tôi về một chủ đề liên quan.
Thay vì đi qua xung quanh việc loại T, bạn có thể vượt qua xung quanh việc loại Tùy chọn [T], gói tất cả mọi thứ có giá trị của loại T, như vậy
val thing = 1
val thingOption = Some(thing)
và lưu trữ tất cả dữ liệu không hợp lệ như Nones, như vậy
val thingOption = None
Sau đó, nếu bạn muốn đưa ra quyết định dựa trên giá trị của thingOption, bạn có thể làm điều đó như thế này
thingOption match {
case None => // Whatever you want to do with defaults
case Some(x) => // Whatever you want to do with 'thing' if it isn't a default
}
@NikitaVolkov, tôi đề xuất một thử nghiệm, đặt một lời nhắc nhở cho một năm kể từ bây giờ trong lịch của bạn với một liên kết đến câu hỏi của bạn. Khi lời nhắc bật lên, quay lại câu trả lời này và bình luận của bạn và xem bạn vẫn cảm thấy như vậy. – huynhjl
@huynhjl Tôi biết rất rõ về lợi ích của phương pháp 'Option' trên phương thức' null', nhưng với nhận xét của tôi, tôi đã chỉ ra rằng đề xuất này không liên quan gì đến câu hỏi hiện tại. Có một đường viền khá chắc chắn giữa 'null' và' "" 'hoặc' 0' –
Điều này không trả lời trực tiếp câu hỏi, nhưng có liên quan cao. Kiểm tra nếu một giá trị là "zero-esque" thường là dấu hiệu cho thấy bạn nên sử dụng Tùy chọn thay thế. –
- 1. thử nghiệm cho các khóa trống/chuỗi null trong django
- 2. Ant, chạy tất cả JUnit thử nghiệm
- 3. Thử nghiệm đơn vị Laravel - Chạy tất cả các thử nghiệm
- 4. chạy tất cả các thử nghiệm đơn vị zend framework2
- 5. Chạy tất cả các thử nghiệm mở trong Visual Studio
- 6. Làm cách nào để chạy thử nghiệm cho tất cả các ứng dụng Django của tôi?
- 7. Cách đặt danh mục thử nghiệm cho tất cả các bài kiểm tra trong lớp
- 8. Đặt tiêu đề HTTP cho tất cả các yêu cầu trong thử nghiệm Flask
- 9. Giá trị trống trong dịch vụ web cho loại Int64
- 10. Làm thế nào để thay thế các giá trị trống (null) bằng 0 cho tất cả các bản ghi?
- 11. Matplotlib: Làm cho tất cả các giá trị trong phạm vi hiển thị trên trục x
- 12. Yêu cầu kiểm tra: cách thiết lập chung cho tất cả các phòng thử nghiệm
- 13. (Javascript) Danh sách các giá trị "navigator.appName" cho tất cả các trình duyệt?
- 14. Cơ sở dữ liệu thử nghiệm Django trông trống trong khi thử nghiệm là runnin
- 15. tổng tất cả các giá trị cho cột bảng dựa trên lớp
- 16. thử nghiệm cho trống jQuery lựa chọn kết quả
- 17. Thử nghiệm một ứng dụng cho Android
- 18. Xóa tất cả các khoảng trống và các dòng trống
- 19. giữ giá trị biến trên tất cả các hoạt động trên android
- 20. Cách sử dụng Selenium để lưu trữ giá trị giữa các thử nghiệm
- 21. Khi thử nghiệm với rspec, nơi để đặt phổ biến "phương pháp thử nghiệm tiện ích"?
- 22. Làm thế nào để áp dụng một JUnit @Rule cho tất cả các trường hợp thử nghiệm trong một bộ
- 23. Làm thế nào để 'đi thử nghiệm` tất cả các thử nghiệm trong dự án của tôi?
- 24. Vim chạy autocmd trên tất cả các loại tệp EXCEPT
- 25. jquery nhận tất cả các giá trị từ cột bảng
- 26. Máy khách thử nghiệm của Django có nhiều giá trị cho các khóa dữ liệu
- 27. Biểu đồ Xu hướng Kết quả Thử nghiệm Jenkins Trống, nhưng Thử nghiệm đang Chạy
- 28. Tìm kiếm tất cả các bảng, tất cả các cột cho một giá trị cụ thể SQL Server
- 29. Nhận tất cả các giá trị của tất cả các hàng trong HBase bằng cách sử dụng Java
- 30. Mocking Thời gian được sử dụng bởi tất cả các phiên bản của DateTime cho mục đích thử nghiệm.
Bài đăng trên blog tuyệt vời! Tại sao bạn đề xuất giải pháp dựa trên Scalaz? –
@NikitaVolkov: Bạn không cần phải sử dụng Scalaz. Tôi đã bao gồm một liên kết đến 'Zero.scala' trong Scalaz, và như bạn có thể thấy nó tầm thường để viết nó cho mình. – missingfaktor