我有一个readData()
函数读取文件,返回几个不同的解析数据对象。目前,readData()
的返回类型为Object[]
:
Object[] data = readData();
MyGenome genome = data[0];
Species[] breeds = data[1];
//etc
这感觉很尴尬。有没有更好的方法来返回这些数据?我不想拥有像readGenome()
和readSpecies()
这样的单独函数,因为这需要迭代文件两次。另外,我宁愿将所有数据收集结合在一个函数中。
类似的问题:在两个字符串之间返回至少四个字符匹配的函数:
public int[][] findMatch(String g0, String g1) { /* cool stuff */ }
//...
int[][] bounds = findMatch("ACOIICOCOCICOICA", "AOCCCCCCICCIIIIIOIAOCICOICOICA");
其中bounds[0][0]
是g0的左边界,bounds[0][1]
是g0的右边界,bounds[1][0]
是g1的左边界,等等。这也有点尴尬。如果不连续查找键,很难对结果进行编码。
答案 0 :(得分:6)
创建一个新类:
class MyAnalysedGenome {
MyGenome genome;
Species[] species
...
}
并返回。您可能会发现您还应该有其他功能。也许围绕你的getData()调用的代码。
答案 1 :(得分: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);
答案 2 :(得分:0)
对于第一个问题,您不能简单地使用中间数据表示吗?我的意思是你可以读取你的文件一次,它会给你文件内容(你可以按你想要的方式格式化),然后创建两个方法readGenome()
和readSpecies()
,将这个文件内容作为一个参数。
答案 3 :(得分:0)
您可以创建一个以基因组和物种为领域的类。
...
class DataToBeRead {
MyGenome genome;
Species[] breeds;
}
...
DataToBeRead data = readData();
MyGenome genome = data.genome;
Species[] breeds = data.breeds;
如果你不认为其他人会使用它或者如果其他人会使用它,那么你可以将该课程设为私有。
如果您不想为其创建单独的文件,也可以将其设置为静态。
希望这有帮助。