Xác thực bằng Require
Thuộc phần Logic và luồng chương trình trong hành trình Kotlin của Coddy. Bài học 54 trên 63.
require(condition) kiểm tra hợp đồng của đối số hàm. Nếu điều kiện là false, hàm này ném ra IllegalArgumentException. Bạn có thể dùng lambda ở cuối để cung cấp thông báo lỗi. Bắt ngoại lệ được mong đợi ở nơi gọi hàm giúp bạn chuyển đầu vào không hợp lệ thành một kết quả đã xác định.
fun ticketCost(count: Int): Int {
require(count >= 0) { "count must be nonnegative" }
return count * 5
}Bên trong main:
try {
println(ticketCost(-2))
} catch (error: IllegalArgumentException) {
println("invalid")
}Điều kiện đối số không thỏa mãn sẽ ném ngoại lệ trước khi tính chi phí.
require ném IllegalArgumentException khi điều kiện của nó là false.
Thử thách
Trung bìnhHoàn thiện validatedCost với tham số count: Int. Dùng hàm hỗ trợ tính chi phí được cung cấp, hàm này yêu cầu count không âm. Trả về chi phí dưới dạng chuỗi nếu thành công, hoặc invalid nếu ném ra IllegalArgumentException. count nằm trong khoảng từ -1000 đến 1000.
Trừ khi có giới hạn chặt hơn được nêu ở trên, các tập hợp chứa tối đa 100 phần tử ở mỗi cấp, còn các đối số số nguyên và giá trị số nguyên trong tập hợp nằm trong khoảng từ -1000 đến 1000. Văn bản dùng để phân tích có thể chứa các biểu diễn không hợp lệ hoặc nằm ngoài phạm vi như mô tả.
Trả về một giá trị có kiểu String. Giữ nguyên code đầu vào/đầu ra được cung cấp. Code này đọc từng đối số đơn trên một dòng; danh sách bắt đầu bằng số lượng phần tử, tiếp theo là các phần tử, còn bản đồ bắt đầu bằng số lượng mục, tiếp theo là từng khóa và giá trị. Danh sách lồng nhau lặp lại định dạng số lượng phần tử và các phần tử cho mỗi hàng. main được cung cấp sẽ in giá trị trả về, theo sau là một ký tự xuống dòng. Danh sách dùng định dạng có dấu ngoặc vuông tiêu chuẩn của Kotlin; không in thêm nhãn.
Tự làm thử
fun cost(count: Int): Int {
require(count >= 0) { "count must be nonnegative" }
return count * 5
}
fun validatedCost(count: Int): String {
// Viết lời giải của bạn ở đây.
return ""
}
fun main() {
val count = readln().toInt()
println(validatedCost(count))
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng chương trình
4Các tập hợp lồng nhau
Danh sách các danh sáchDuyệt qua các hàngTóm tắt từng hàngLàm phẳng danh sách lồng nhauÔn tập: Các hàng ghế8Sắp xếp và nhóm
Sắp xếp theo khóaKết hợp các phép so sánhNhóm các giá trịLiên kết theo khóaÔn tập: bảng xếp hạng theo độ dài11Xử lý lỗi
Phân tích cú pháp không dùng ngoại lệBắt lỗi cụ thểTry dưới dạng biểu thứcXác thực bằng RequireÔn tập: Các đại lượng đã xác thực3Tập hợp và phép kiểm tra thành viên
Tạo tập hợpCập nhật tập hợpCác phép toán trên tập hợpKiểm tra tập conÔn tập: Khách mời sự kiện6Giá trị hàm
Viết biểu thức lambdaCác kiểu hàmTruyền hàmBiến được captureÔn tập: Điểm số có thể tùy chỉnh9Luồng điều khiển nâng cao
Mệnh đề bảo vệThoát khỏi vòng lặp có nhãnTiếp tục vòng lặp có nhãnHàm đệ quyÔn tập: hàng hợp lệ đầu tiênTự luyện tập: Playground Kotlin