Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
使用“传递ocaml中的多个语句”;在;及;及;操作 我想把这个C++代码转换成OCAM,但是我得到了语法错误_Ocaml_Ocamlbuild - Fatal编程技术网

使用“传递ocaml中的多个语句”;在;及;及;操作 我想把这个C++代码转换成OCAM,但是我得到了语法错误

使用“传递ocaml中的多个语句”;在;及;及;操作 我想把这个C++代码转换成OCAM,但是我得到了语法错误,ocaml,ocamlbuild,Ocaml,Ocamlbuild,C++代码 int** matrix(int n,int **a,int**b) { t=n/2; a11=new int*[t]; for(i=0;i<t;i++) a11[i]=new int [t]; for(i=0;i<t;i++) for(j=0;j<t;j++) a11[i][j]=a[i][j]; a12=new int*[t]; for(i=0;i<t;i++) a12[i]=new int [t]; for(i=

C++代码

int** matrix(int n,int **a,int**b)
{
t=n/2;
a11=new int*[t];
for(i=0;i<t;i++)
    a11[i]=new int [t];
for(i=0;i<t;i++)
    for(j=0;j<t;j++)
        a11[i][j]=a[i][j];

a12=new int*[t];
for(i=0;i<t;i++)
    a12[i]=new int [t];
for(i=0;i<t;i++)
    for(j=0;j<t;j++)
        a12[i][j]=a[i][j+t];

a21=new int*[t];
for(i=0;i<t;i++)
    a21[i]=new int [t];
for(i=0;i<t;i++)
    for(j=0;j<t;j++)
        a21[i][j]=a[i+t][j];
}
int**矩阵(int n,int**a,int**b)
{
t=n/2;
a11=新整数*[t];

对于(i=0;ilet的
不能出现在let的主体中。相反,请使用多个let:

let matrix n x y =
  let t = n/2 in
  let a11 = Array.make_matrix t t 0 in
  for i = 0 to t-1 do
    for j = 0 to t-1 do
      a11.(i).(j) <- x.(i).(j)
    done
  done;
  let a12 = Array.make_matrix t t 0 in
  for i = 0 to t-1 do
    for j = 0 to t-1 do
      a12.(i).(j) <- x.(i).(j+t)
    done
  done;
  let a21 = Array.make_matrix t t 0 in
  for i = 0 to t-1 do
    for j = 0 to t-1 do
      a21.(i).(j) <- x.(i+t).(j)
    done
  done
让矩阵nxy=
设t=n/2英寸
设a11=Array.make_矩阵t0 in
对于i=0到t-1 do
对于j=0到t-1 do

a11.(i)。(j)为了澄清,以下代码与原始代码有相同的问题:

# let x = 4 in () and y = 7 in ();;                
Error: Syntax error
由于
let
定义了一个表达式,这相当于编写
()和()
,这实际上是不合法的OCaml

let…和
的正确用法如下所示:

# let x = 4 and y = 7 in ();;
Warning 26: unused variable x.
Warning 26: unused variable y.
- : unit = ()

有几个
let…和let…
但是在
中只有一个

而不是有三个独立的
用于
循环,一个人也可以先做三个矩阵,然后在同一个循环中初始化它们。是的,或者你可以有一个内部函数,它取一个偏移量来添加到
i
j
不过,因素并不是OP的问题……谢谢@gsg的支持explanation@gsg你的第一句话不正确,
let x=(y+z中的y=1和z=2)
在ocaml中是正确的。但是我同意你的说法。@Sheeft:这是不同的
let
(并且不在
let
的主体中)。
# let x = 4 and y = 7 in ();;
Warning 26: unused variable x.
Warning 26: unused variable y.
- : unit = ()