Scala IntList到Java

Scala IntList到Java,java,scala,Java,Scala,我有一个Scala函数,它返回一个IntList def绘图线(x0:Int,y0:Int,x1:Int,y1:Int):IntList={ val list:IntList=drawLineRec(x0,y0,x1,y1,Math.abs(x1-x0),-Math.abs(y1-y0),Math.abs(x1-x0)-Math.abs(y1-y0)) println(“\n行:+列表) 返回列表 } 我现在想在我的java文件中使用它,在这里我调用这个函数并得到返回值 CalcDraw.In

我有一个Scala函数,它返回一个IntList

def绘图线(x0:Int,y0:Int,x1:Int,y1:Int):IntList={
val list:IntList=drawLineRec(x0,y0,x1,y1,Math.abs(x1-x0),-Math.abs(y1-y0),Math.abs(x1-x0)-Math.abs(y1-y0))
println(“\n行:+列表)
返回列表
}
我现在想在我的java文件中使用它,在这里我调用这个函数并得到返回值

CalcDraw.IntList drawLine=newDraw.drawLine(x0,y0,x1,y1);
有没有一种方法可以在java中运行这个IntList,因为我尝试使用
for
foreach
,但没有任何运气

返回调用包含如下内容:

Cons((20,20),Cons((21,21),Nil())

编辑更多信息

下面是一个简化的Scala代码:

类CalcDraw{//ctrl+shift+b进行计算。
密封抽象类列表;
case类Nil()扩展了IntList;
case类Cons(hd:(Int,Int),tl:IntList)扩展了IntList;
def concat(list1:IntList,list2:IntList):IntList=list1匹配{
//连接两个列表
case Nil()=>list2
案例Cons(head,tail)=>Cons(head,concat(tail,list2))
}
def concatIf(list1:IntList,list2:IntList,谓词:()=>Boolean):IntList=if(谓词()){
concat(列表1、列表2)
}否则{
返回列表1
}
/*
*
*线描
*
*/
def next(x0:Int,x1:Int):Int=if(x0=dy)
{
如果((2*err)您可以执行以下操作:

CalcDraw-CalcDraw=new-CalcDraw();
CalcDraw.IntList l=CalcDraw.drawLine(1,2,3,4);
while(CalcDraw.Cons的l实例){
CalcDraw.Cons Cons=(CalcDraw.Cons)l;
System.out.println(cons.hd());
l=cons.tl();
}

另外,请阅读,这里不应该使用。你可以去掉分号。你可能想将
IntList
定义为
sealed trait
。你可以在上阅读更多关于它的内容。为什么你想让Java中的这段代码平静下来
IntList
只是一个需要学习的简化集合使用stdlib中提供的集合,如果与Java交互,则使用
JavaConverters
@Tomer\u Shetah将它们转换为Java集合,您是否可以向我解释while循环的具体功能?我以前从未这样做过:)@我当然可以,但我认为这很直截了当。你能告诉我你不明白什么吗?当你有一段时间处理
实例的时候
它做什么?我想我理解其余的,
CalcDraw.Cons=(CalcDraw.Cons)列出了所有的缺点,然后我就得到了
(x,y)
来自
hd:(int,int)
就像你告诉我的
cons.hd()
@menology它检查
l
的类型。它可能是
CalcDraw.Cons
CalcDraw.Nil
。如果是第一个,这意味着我们可以提取头部。一旦我们到达
CalcDraw.Nil
,就没有其他项目了,我们停止循环。这对您有意义吗?是的,谢谢!)