Scala 函数式编程:从嵌套循环中获取数据列表
我有三节课Scala 函数式编程:从嵌套循环中获取数据列表,scala,functional-programming,Scala,Functional Programming,我有三节课 class C { var id: String = _ } class B { var c: List[C] = _ } class A { var b: List[B] = _ } 我想收集类“C”实例的所有“id”,它们位于类“a”实例中 此示例代码的预期输出是具有两个元素(即data1、data2)的List[String] 在命令式编程中,我用下面的代码片段实现了同样的效果 def collectCId(a: A): List[String] = {
class C {
var id: String = _
}
class B {
var c: List[C] = _
}
class A {
var b: List[B] = _
}
我想收集类“C”实例的所有“id”,它们位于类“a”实例中
此示例代码的预期输出是具有两个元素(即data1、data2)的List[String]
在命令式编程中,我用下面的代码片段实现了同样的效果
def collectCId(a: A): List[String] = {
var collect = List[String]()
for(tmpb <- a.b){
for(tmpc <- tmpb.c){
collect = tmpc.id :: collect
}
}
collect
}
def collectCId(a:a):列表[字符串]={
var collect=List[String]()
对于(tmpb和理解:
def collectCId(a: A): List[String] =
for {
b <- a.b
c <- b.c
} yield c.id
def collectCId(a:a):列表[字符串]=
对于{
b变量的名称令人困惑:c
作为一个列表[c]
,可能使用cs
来代替?谢谢@chirlo。我有一个简单的问题。是否删除“var”在客观方面被称为函数式编程吗?@user811602,你能重新表述一下这个问题吗?不知道你在问什么,对不起。当我可以说我已经用函数式编程范式编写了代码时?有没有相同的固定规则集?我知道这可能是不同的问题,但快速链接将对我有很大帮助。有一些通常与FP相关的概念,如避免副作用和不变性,但它不是黑白的,不需要全神贯注。你可以在命令式程序中使用一些FP原则,并获得很多好处。有非常好的信息开始,我建议深入了解,只是不要阅读一次完成这一切,当你对FP更加熟悉时,继续按需阅读。
def collectCId(a: A): List[String] =
for {
b <- a.b
c <- b.c
} yield c.id