小编mic*_*yer的帖子

IntelliJ 源代码编辑器显示错误的编译错误

我对带有 Scala 的 IntelliJ IDEA 开发环境(版本 14)的以下奇怪行为有疑问:

在我将(全局)scala SDK 从 2.11 版本重置为 2.10.4 版本后,源代码编辑器显示了许多编译错误:列表、映射、打印、(1 到 n)等都是红色的。

SDK加入全局库,jar包都找到了。

但是代码编译并正确运行(我重建了项目以强制重新编译)。有没有人经历过这样的事情?如何解决这个问题?

我使用的是 java sdk 1.7.0_55。

scala intellij-idea

6
推荐指数
1
解决办法
2363
查看次数

scala重写类参数

之前已经讨论过这个话题,但没有得到令人满意的答复(在我看来).请考虑以下scala代码:

class A(a:Int) { val _a=a }
class A1(val a:Int) { val _a=a }

class B(a:Int) extends A(a)                    // OK
class C(val a:Int) extends A(a)                // OK

class B1(a:Int) extends A1(a)                  // OK
class C1(val a:Int) extends A1(a)              // fails
class D1(override val a:Int) extends A1(a)     // OK  
Run Code Online (Sandbox Code Playgroud)

我认为将class参数声明为val只会对构造函数调用产生影响:复制参数而不是传递引用.但是,在每种情况下,类字段都被分配为val.它是否正确?

现在我不明白为什么我们在最后一行需要override关键字.请注意,我们不会将类声明为案例类,因此不会自动分配字段.

最后有一个很好的理由为什么人们甚至想要用val类参数定义类似A1的类?

提前感谢所有回复.

parameters overriding scala class

3
推荐指数
1
解决办法
1363
查看次数

scala,使用类成员函数作为第一类函数

我想将类实例的成员函数指定为变量的第一类函数:

class A(val id:Int){ def f(u:Int)=id+u }
val a= new A(0)
val h=a.f         // fails: interpreted as a.f(with missing parameter u)
val h1 = (u:Int)=>a.f(u)    // OK and does what we want
Run Code Online (Sandbox Code Playgroud)

通过分配适当的匿名函数,我们可以获得所需的效果.这是唯一的方法吗?我搜查了但根本找不到任何参考.

scala class function member

0
推荐指数
1
解决办法
340
查看次数

标签 统计

scala ×3

class ×2

function ×1

intellij-idea ×1

member ×1

overriding ×1

parameters ×1