所以我应该先说这个我已经解决了这个问题,但语法很糟糕,所以我想知道是否有一种Perl-ish方式做得更好.
我有两个长度为n(@genes和@names)的数组.我想将它们组合成一个配对值的2D数组.
我现在的做法是;
$Num = Number of elements in each array
my @genes = ();
foreach my $i ( 0 .. $num-1 ) {
foreach my $j ( 0 .. 1 ) {
if ($j == 0){ push @{ $genes[$i] }, $names[$i];}
if ($j == 1){ push @{ $genes[$i] }, $lengths[$i];}
}
}
Run Code Online (Sandbox Code Playgroud)
但是这需要为每个附加列提供一个明确的行(现在我有两个 - 名称和长度).它也很可怕.代码只有母亲才能爱.
有什么想法吗.注意
@genes = (\@lengths, \@names);
Run Code Online (Sandbox Code Playgroud)
难道没有达到我想要的.
我有大量遗留代码要处理(Fortran F90).处理最困难的事情之一是每个文件包含少量的大量函数,每个函数都有很长的列表
use <module name>
Run Code Online (Sandbox Code Playgroud)
然后代码使用这些模块中定义的变量和数据结构.问题是它难以置信的困难,以确定这些变量最初定义/初始化,因为他们在定义一个对的use模块,并在代码初始化其他地方(这大约是100 000 LOC).
有没有办法在Fotran中提供命名空间解析?从阅读中,我猜不是,更一般地说,是否有一个很好的Fortran-Y方式来解决这类问题?
是否有一种标准方法可以将子进程中的浮点值发送到C中的父进程.
我有一些计算,我想要分叉一个进程,然后让孩子做一些繁忙的工作,父母做其他事情,然后孩子将其值(双打)发送回父母(可能通过管道) .很明显,父母可以解析流,但我只是想知道是否有更清洁的方式?
两个快速语法问题
将
real(4), ALLOCATABLE:: thing1(:,:)
Run Code Online (Sandbox Code Playgroud)
创建一个包含2列的2D数组,这是一个尚未定义的行数,其中每个元素是4个实数的数组?
其次,愿意
real(4) box(3,3),versions,revert
Run Code Online (Sandbox Code Playgroud)
创建两个长度为4的数组,以及大小为3x3的2D数组,其中每个元素都是长度为4的数组.