scala for循环结合if、yield

本文详细介绍了Scala编程语言中for循环与yield关键字的使用。通过示例展示了如何利用for循环生成新集合,以及如何进行嵌套for循环,并在循环中添加if条件。在示例中,for循环用于遍历多个Seq,并通过yield将结果组合成新的集合,输出了所有可能的组合。此外,还展示了如何根据条件过滤元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考资料:https://www.cnblogs.com/sunfie/p/4983841.html

for(x <- Seq(1,2) )
yield{
.....
}

在for 循环中应用yield后,集合中的每个元素会被保留在一个新集合中,最后返回。
返回集合的类型和输入集合的类型相同

嵌套for循环
(三层嵌套for循环)

for(rank <-Seq(5,30);
      regParm <-Seq(4.0,0.0001);
      alpha<-Seq(1.0,40.0))
      yield {
        println(rank,regParm,alpha)
      }

输出:

(5,4.0,1.0)
(5,4.0,40.0)
(5,1.0E-4,1.0)
(5,1.0E-4,40.0)
(30,4.0,1.0)
(30,4.0,40.0)
(30,1.0E-4,1.0)
(30,1.0E-4,40.0)

for循环中添加if

val a = Array(1, 2, 3, 4, 5)
    for (e <- a if e > 2) yield e
### Scala 中 `for` 循环的使用方法 #### 基本范围遍历 在Scala中,可以通过指定一个数值范围来进行简单的循环操作。下面是一个从1到10打印变量值的例子: ```scala object Demo { def main(args: Array[String]): Unit = { var a = 0; // 遍历从1至10(含)的整数序列并输出每个数字 for(a <- 1 to 10){ println(s"Value of a: $a"); } } } ``` 此代码段展示了如何定义一个基本的`for`表达式来执行一系列动作,在这里是逐个显示索引值[^1]。 #### 列表过滤与条件判断 除了处理连续的数字区间外,还可以利用`if`子句对集合内的成员实施筛选逻辑。例如,当希望跳过特定项或将注意力限定于满足一定标准的对象时,这种方式非常有用。 ```scala object ForFilter { def main(args: Array[String]): Unit = { val numList = List(1,2,3,4,5,6,7,8,9,10); // 对列表中的元素应用两个条件:排除等于3以及小于8的情况 for(a <- numList if a != 3; if a < 8 ){ println(s"Filtered value of a: $a"); } } } ``` 上述程序片段说明了怎样通过加入额外的布尔测试来控制哪些项目会被访问[^3]。 #### 结合yield创建新集合 另一个强大的特性是能够借助`yield`关键字构建新的数据集。这允许开发者不仅读取现有容器里的条目,而且可以在过程中转换它们形成不同的输出形式。 ```scala val range = (1 until 11).toArray // 创建包含1到10之间所有正整数的一个数组 val doubledNumbers = for(num <- range) yield 2 * num // 将每一个原始数值翻倍后存储在一个新的数组里 println(doubledNumbers.mkString(", ")) // 输出修改后的序列作为逗号分隔字符串 ``` 这段脚本体现了`for`推导式的灵活性——不仅能迭代已有结构还能生产派生自这些源的新实例[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值