Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.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
在scala中转换C循环的连续更新值_Scala - Fatal编程技术网

在scala中转换C循环的连续更新值

在scala中转换C循环的连续更新值,scala,Scala,我有一个ccode 我想在scala中转换它 这是c代码 我没有得到的部分,我如何才能使用scala中的更新值 在这种情况下可以使用foldLeft吗 int value=9999,i,j,length=10; A和B是一些2D整数数组,每个元素的值都在变化。对于整个循环,它不是固定的 for(i=0;i<=5;i++){ for(j=0;j<=5;j++){ if(A[i][j]==value && B[i][j]==value)

我有一个
c
code

我想在scala中转换它

这是
c
代码

我没有得到的部分,我如何才能使用scala中的更新值

在这种情况下可以使用foldLeft吗

int value=9999,i,j,length=10;
A
B
是一些
2D
整数数组,每个元素的
值都在变化。对于整个循环,它不是固定的

for(i=0;i<=5;i++){
   for(j=0;j<=5;j++){
       if(A[i][j]==value && B[i][j]==value)
           length=length+44;
       else if(A[i][j]!=value && B[i][j]==value)
           if(length< 'Some value')
           length=length+11
       else
           if(length< 'Some value')
           length=length+22
     }
}

for(i=0;i等效代码可能如下所示:

def someValue(x: Int, y: Int): Int = ... // I'm treating this as some function that takes the array values and returns an Int
val A: Array[Array[Int]] = ...
val B: Array[Array[Int]] = ...

val Value = 9999 // Capitalised, so it can be used directly in case matches 

( for {
  i <- 0 to 5
  j <- 0 to 5
} yield ((i, j)) ).foldLeft(10){ case (length, (i,j)) => (A(i)(j), B(i)(j)) match {
    case (Value, Value) => length + 44
    case (other, Value) if other != Value =>
      if (length < someValue(A(i)(j), B(i)(j))) {
        length + 11
      } else {
        length
      }      
    case _ => length
  }
}
def someValue(x:Int,y:Int):Int=…//我将其视为接受数组值并返回Int的函数
val A:Array[Array[Int]=。。。
val B:Array[Array[Int]=。。。
val Value=9999//已大写,因此可以直接用于大小写匹配
(用于{
i长度+44
如果其他!=值=>
if(长度长度
}
}

我停止了
length
someValue
的第二次比较,因为不清楚如何在上面的
C
代码中找到这段代码。

您是否尝试过用scala编写它?只要试着解释一下您的问题是什么,您就会得到帮助:)您可以使用
进行理解,您可以使用
折叠
或递归。您可以使用
var
val
进行中间结果-有很多方法可以做到这一点。您还可以几乎直接将您的代码翻译为Scala。感谢您的宝贵意见。我尝试了foldleft,它对我很有效。非常感谢您的支持回复:)感谢您的回复:)