Range Pattern的疑惑

///|
fn classify_char(c : Char) -> Unit {
  match c {
    'A'..='Z' => println("UpperCase")
    'a'..='z' => println("LowerCase")
    '0'..='9' => println("Digit")
    _ => println("Special")
  }
}

///|
fn main {
  let c : Char = 'a'
  match c {
    'A'..='Z' => println("UpperCase")
    'a'..='z' => println("LowerCase")
    '0'..='9' => println("Digit")
    _ => println("Special")
  }
  classify_char(c)
}

输出如下:
Special
LowerCase

不太理解第一个输出的是Special

编译器bug.

///|
fn classify_char(c : Char) → Unit {
match c {
‘A’…=‘Z’ => println(“UpperCase”)
‘a’…=‘z’ => println(“LowerCase”)
‘0’…=‘9’ => println(“Digit”)
_ => println(“Special”)
}
}

///|
fn main {
let mut c : Char = ‘a’
c = ‘a’
match c {
‘A’…=‘Z’ => println(“UpperCase”)
‘a’…=‘z’ => println(“LowerCase”)
‘0’…=‘9’ => println(“Digit”)
_ => println(“Special”)
}
classify_char(c)
}

这样就正常输出了。

赞!!!

期待官方团队尽快修复。

PS. 说是今年要达到1.0版本, 看到这样的bug,感觉堪忧啊, 还有更主要是核心库缺的东西有点多

还有一点, 这个论坛上的新帖数量是下降的趋势啊

官方时间紧,论坛基本就是单向发布。野长的论坛,新鲜期过了,自然关注度会趋少。
相信张文宏和团队的技术实力和市场眼光。
moonbit需要时间成长,希望深圳坚定持续地支持这个语言进化发展。

PS. 如果moonbit能对接好c和rust的生态,那简直太妙了。

已经修复,谢谢反馈

2 个赞