1

我有一个readData()读取文件的函数,它返回几个不同的解析数据对象。现在,返回类型readData()Object[]

Object[] data = readData();
MyGenome genome = data[0];
Species[] breeds = data[1];
//etc

这感觉很尴尬。有没有更好的方法来返回这些数据?我不想拥有像readGenome()and这样的单独函数,readSpecies()因为这需要对文件进行两次迭代。此外,我宁愿将所有数据收集都包含在一个函数中。

一个类似的问题:返回两个字符串之间至少四个字符的匹配的函数:

public int[][] findMatch(String g0, String g1) { /* cool stuff */ }
//...
int[][] bounds = findMatch("ACOIICOCOCICOICA", "AOCCCCCCICCIIIIIOIAOCICOICOICA");

g0 的左边界是哪里bounds[0][0],g0bounds[0][1]的右边界是哪里,g1 的左边界是哪里bounds[1][0],等等。这也让人感觉有点尴尬。如果不不断查找密钥,就很难使用结果进行编码。

4

4 回答 4

6

创建一个新类:

class MyAnalysedGenome {
    MyGenome genome;
    Species[] species
    ...
}

并返回。您可能会发现您还有其他功能也应该包含在内。也许围绕您的 getData() 调用的代码。

于 2009-09-29T02:12:00.200 回答
5

使用强类型类来表示 readData() 的复杂返回类型怎么样?

public class Taxonomy
{
    public MyGenome genome;
    public Species[] breeds;
    //etc
{

Taxonomy data = readData();

您可以对搜索范围问题做同样的事情

public class SearchBoundary
{
    public int left;
    public int right;
}

SearchBoundary resultBounds = findMatch(searchBounds);
于 2009-09-29T02:12:31.970 回答
0

对于第一个问题,您不能简单地使用中间数据表示吗?我的意思是你可以读取你的文件一次,它会给你文件内容(你可以按照你想要的方式格式化),然后创建两个方法readGenome()并将readSpecies()这个文件内容作为参数。

于 2009-09-29T02:12:53.193 回答
0

您可以创建一个将基因组和物种作为字段的类。

...
class DataToBeRead {
    MyGenome  genome;
    Species[] breeds;
}
...


DataToBeRead data   = readData();
MyGenome     genome = data.genome;
Species[]    breeds = data.breeds;

如果您认为没有其他人会使用该课程,您可以将其设为私有;如果其他人会使用它,您可以将其设为公开。

如果您不想为其创建单独的文件,也可以将其设为静态。

希望这可以帮助。

于 2009-09-29T02:13:02.320 回答