我已经通过互联网阅读了Scala中的Traits
可以提供具体成员的接口
这意味着,traits是接口,我们可以为接口中的方法提供body.我在这里有一个简单的查询,如果这可能比我的下面的代码显示错误的原因:
错误:(6,8)对象Car继承冲突成员:trait中的方法startEngine类型=>单位和方法startEngine in type => Unit单位(注意:这可以通过在对象Car中声明覆盖来解决).对象汽车用汽车扩展车辆{
trait Vehical {
def startEngine : Unit = {
println("Vehical Start")
}
def stopEngine
}
trait Motor {
def startEngine : Unit = {
println("Motor Start")
}
def stopEngine
}
object Car extends Vehical with Motor {
override def stopEngine : Unit = {
println("Stop Engine")
}
def main(args: Array[String]): Unit = {
Car.startEngine
Car.stopEngine
}
}
Run Code Online (Sandbox Code Playgroud)
作为一个java开发人员,我不会在界面中提供body,但scala traits允许这样做.如果traits不是接口,那么我会将它们视为抽象类,这意味着scala中不允许使用接口.
另请告诉我如何解决这个歧义问题.如果多个特征中有相同的方法,我如何在子类中使用我的startEngine方法.
我有一个Apache Spark Dataframe,其中包含以下数据(ID,Name,DATE):
ID,Name,DATE
1,Anil,2000-06-02
1,Anil,2000-06-03
1,Anil,2000-06-04
2,Arun,2000-06-05
2,Arun,2000-06-06
2,Arun,2000-06-07
3,Anju,2000-06-08
3,Anju,2000-06-09
3,Anju,2000-06-10
4,Ram,2000-06-11
4,Ram,2000-06-02
4,Ram,2000-06-03
4,Ram,2000-06-04
5,Ramu,2000-06-05
5,Ramu,2000-06-06
5,Ramu,2000-06-07
5,Ramu,2000-06-08
6,Renu,2000-06-09
7,Gopu,2000-06-10
7,Gopu,2000-06-11
Run Code Online (Sandbox Code Playgroud)
但我想要ID的前两个最新记录,我想获得以下输出:
ID,Name,DATE
1,Anil,2000-06-03
1,Anil,2000-06-04
2,Arun,2000-06-06
2,Arun,2000-06-07
3,Anju,2000-06-09
3,Anju,2000-06-10
4,Ram,2000-06-03
4,Ram,2000-06-04
5,Ramu,2000-06-07
5,Ramu,2000-06-08
6,Renu,2000-06-09
7,Gopu,2000-06-10
7,Gopu,2000-06-11
Run Code Online (Sandbox Code Playgroud)
我是否需要使用像Lag这样的窗口函数?