斯卡拉 – 不确定我的任务在哪里
发布时间:2020-12-16 08:51:43 所属栏目:安全 来源:网络整理
导读:今天我遇到了一些问题,分配给存储在地图中的案例类实例中的var字段.这是repl演示问题的简单会话: scala case class X(var x: Int)defined class Xscala val m = Map('x - X(1))m: scala.collection.immutable.Map[Symbol,X] = Map('x - X(1))scala mres0: s
今天我遇到了一些问题,分配给存储在地图中的案例类实例中的var字段.这是repl演示问题的简单会话:
scala> case class X(var x: Int) defined class X scala> val m = Map('x -> X(1)) m: scala.collection.immutable.Map[Symbol,X] = Map('x -> X(1)) scala> m res0: scala.collection.immutable.Map[Symbol,X] = Map('x -> X(1)) scala> m('x).x = 7 scala> m res1: scala.collection.immutable.Map[Symbol,X] = Map('x -> X(1)) scala> val x = m('x) x: X = X(1) scala> x.x = 7 x.x: Int = 7 scala> x res2: X = X(7) scala> m res3: scala.collection.immutable.Map[Symbol,X] = Map('x -> X(7)) scala> m('x).x_=(8) scala> m res5: scala.collection.immutable.Map[Symbol,X] = Map('x -> X(8)) 第一次分配尝试什么也没做.但是,将实例存储在val中然后执行赋值工作,就像直接调用字段的赋值方法一样. 我正在使用Scala 2.9.2. 如果这是预期的行为,那么如果有人可以向我解释它会很好,因为我现在似乎无法理解它.如果这是一个错误,那么也很好. 无论哪种方式,知道第一个m(‘x).x = 7分配的去向也是有趣的.我假设某些东西在某处变异 – 我只是不知道那是什么东西. 更新:看起来这只发生在repl中.我只是尝试编译代码,并按预期进行分配.那么,repl对我的任务做了什么? 解决方法
这似乎是一个错误.如果每晚使用2.10执行此操作,则会抛出错误消息:
scala> m('x).x = 7 <console>:10: error: ')' expected but string literal found. + "m(scala.Symbol("x")).x: Int = " + `$ires0` + "n" ^ 我为此创建了一个ticket. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |