范围模式
当需要匹配连续值时,使用之前介绍的或模式会显得繁琐。为此,我们可以使用范围模式来匹配指定区间内的值。
回顾第一章学过的语法:
start..<end
表示左闭右开区间start..=end
表示闭区间
范围模式支持内置的整数类型,包括:Byte
、Int
、UInt
、Int64
、UInt64
以及Char
类型。
fn score_to_grade(score : Int) -> String {
match score {
0..<60 => "F"
60..<70 => "D"
70..<80 => "C"
80..<90 => "B"
90..=100 => "A"
_ => "Invalid score"
}
}
fn classify_char(c : Char) -> String {
match c {
'A'..='Z' => "UpperCase"
'a'..='z' => "LowerCase"
'0'..='9' => "Digit"
_ => "Special"
}
}
fn is_scalar_value(codepoint : Int) -> Bool {
match codepoint {
0x0000..=0xD7FF | 0xE000..=0x10FFFF => true
_ => false
}
}
fn main {
println(score_to_grade(50))
println(score_to_grade(85))
println(score_to_grade(95))
println(classify_char('A'))
println(classify_char('1'))
println(classify_char('!'))
println(is_scalar_value(0xD500))
}