我有一个大问题,我有几天试图解决它,我希望有人能帮助我。问题如下: 我有一个列表,可以有n个元素,而是取决于元件的数量,我应该以不同的方式应用功能,例如我有以下代码:斯卡拉递归列表操作
if (list.size() == 1){
p = list.get(0)
select = new Select(schema,p)
println(select)
} else { //If list have 2 elements
p = list.get(0)
p1 = list.get(1)
select = new Select(schema,And(p,p1))
println(select)
} else { //If list have 3 elements
p = list.get(0)
p1 = list.get(1)
p2 = list.get(2)
select = new Select(schema,new And(And(p,p1),p2))
println(select)
} else { //If list have 4 elements
p = list.get(0)
p1 = list.get(1)
p2 = list.get(2)
p3 = list.get(3)
select = new Select(schema,new And(And(p,p1),And(p2,p3))
println(select)
} else { //If list have 5 elements.......... and so on
哪有避免这种条件限制,并使其发挥作用。我试着用for循环,但是我不能生成新的变量,并且我也不知道如何给And函数赋予控制权....如果你需要mor信息请让我知道
为了添加更多的信息,AND功能是嵌套循环连接是使用关系数据库:
sealed abstract class Pat //patterns
case class And(p1: Pat, p2: Pat) extends Pat
这有正在使用后,我得到上述条件语句的结果的另一功能。这个想法也是,我可以在列表中有n个元素,而不是一个固定数字,因此我认为匹配不是一个选项
我会开始使用else而不是其他 –
或者'match'语句怎么样? – Simon
应该处理任何大小的列表吗?能有多于一层的嵌套布尔表达式吗?也许你可以提供一个示例输入和一个示例输出 – Simon