加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Scala元组赋值中使用unicode变量

发布时间:2020-12-16 18:04:46 所属栏目:安全 来源:网络整理
导读:val ?? = 1val (?,?) = (1,2) 第1行在Scalac和REPL中都能正常工作,但在两者上都是2行扼流圈. 这是一个错误吗?还是有一种我缺少的特殊语法? 免责声明:我知道使用非ASCII变量名称是一个糟糕的主意.我完全意外地遇到了这个.我发誓,我的代码库并没有充满古怪
val ?? = 1
val (?,?) = (1,2)

第1行在Scalac和REPL中都能正常工作,但在两者上都是2行扼流圈.

这是一个错误吗?还是有一种我缺少的特殊语法?

免责声明:我知道使用非ASCII变量名称是一个糟糕的主意.我完全意外地遇到了这个.我发誓,我的代码库并没有充满古怪的符号.请不要责骂我:)

解决方法

也许这有助于:

scala> val (x,y) = (1,2)
x: Int = 1
y: Int = 2

scala> val (X,Y) = (1,2)
<console>:7: error: not found: value X
       val (X,2)
            ^
<console>:7: error: not found: value Y
       val (X,2)
               ^

当模式匹配时,unicode被视为大写字符,这意味着,因为它以“大写字母”“开始”,它认为您正在与常量进行比较而不是分配值.

另一个例子:

val ? = 1
val ? = 3

(1,2) match {
  case (?,?) => "Both match"
  case (_,?) => "Second matches"
  case (?,_) => "First matches"
  case _      => "None match"
}

结果是

res0: java.lang.String = First matches

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读