Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 使用条件遍历数组以创建新数组_Arrays_Scala_For Loop - Fatal编程技术网

Arrays 使用条件遍历数组以创建新数组

Arrays 使用条件遍历数组以创建新数组,arrays,scala,for-loop,Arrays,Scala,For Loop,如何遍历数组并分配其val? 我尝试了以下两种方法,但都不起作用: var a : Array[String] = Array("foo","bar") var b : Array[String] = Array() for (i <- 0 to (a.length-1)) { println(a(i)) b :+ a(i) } var a:Array[String]=Array(“foo”、“bar”) 变量b:Array[String]=Array() 对于(i您可以

如何遍历数组并分配其
val
? 我尝试了以下两种方法,但都不起作用:

var a : Array[String] = Array("foo","bar")
var b : Array[String] = Array()
for (i <- 0 to (a.length-1)) {
    println(a(i))
    b :+ a(i)
}
var a:Array[String]=Array(“foo”、“bar”)
变量b:Array[String]=Array()
对于(i您可以使用
数组
根据条件进行过滤

以元素长度为条件尝试此示例

val a : Array[String] = Array("foo","bars")
val b = a.filter(el => el.length > 3)
注意:最好使用
val
以避免可变性。

您可以使用
数组
根据条件进行过滤

以元素长度为条件尝试此示例

val a : Array[String] = Array("foo","bars")
val b = a.filter(el => el.length > 3)

注意:最好使用
val
以避免易变性。

让标准库为您进行复制

val a : Array[String] = Array("foo","bar")
val b : Array[String] = a.clone()
代码无法工作的原因是,
:+
不是赋值运算符。此语句,例如,
Array():+“str”
不会修改
数组
,它会使用修改后的值创建一个新的
数组
。不幸的是,您的代码没有将该新的
数组
分配给新的或现有的变量,因此修改将丢失

你可以这样做

for (element <- a){
  b = b :+ element
}

让标准库为您进行复制

val a : Array[String] = Array("foo","bar")
val b : Array[String] = a.clone()
代码无法工作的原因是,
:+
不是赋值运算符。此语句,例如,
Array():+“str”
不会修改
数组
,它会使用修改后的值创建一个新的
数组
。不幸的是,您的代码没有将该新的
数组
分配给新的或现有的变量,因此修改将丢失

你可以这样做

for (element <- a){
  b = b :+ element
}

尝试b=b++element,可惜它不起作用。尝试b=b++element,可惜它不起作用。谢谢你的回答。这是有意义的。实际上我不想克隆它,但在以后应用一些案例来消除数组的一些值。因此,我使用这个for循环。或者你能建议用什么更好的方式来做呢?所以
b
应该是
a
的副本,但删除了一些值?如果是这种情况,那么按照Jyothi Babu Araja的建议,使用
filter
(或者
filterNot
,取决于要测试的条件)。这意味着我每个步骤都有一个单独的过滤器?比如
val b=a.filter(el=>el.startsWith(“f”)).filter(el=>el.startsWith(“ba”))
?显然不是。任何元素都不会以“f”和“ba”开头。请参阅我的更新。感谢您的回答。这很有意义。实际上我不想克隆它,但在以后应用一些案例来消除数组的某些值。因此我将此用于循环。或者您可以建议如何更好地执行此操作?因此
b
应该是
a
的副本,但删除了一些值?如果是这样的话案例然后按照Jyothi Babu Araja的建议,使用
过滤器
(或
过滤器不
,取决于待测试的条件)。这意味着我每个步骤都有一个单独的过滤器?比如
val b=a.filter(el=>el.startsWith(“f”)。filter(el=>el.startsWith(“ba”))
??显然不是。没有任何元素将以“f”和“ba”开头。请参阅我的更新。