2016-08-26 7 views
0

我々のようなアルゴリズムを参照してください。私はScalaのでこれを実装しようとしている間違っ前方参照Javaでかなり頻繁に

MyObject currentObject = null 

for(MyObject oldObject: objects){ 
    if(currentObject != null) doSomething 
    else doSometing 
    currentObject = oldObject 
} 

を:

var currentObject: MyObject = null 
for(oldObject <- objects){ 
    if(currentObject != null) doSomething 
    else doSometing 
    currentObject = oldObject 
} 

しかし、私が受けていますWrong Forward参照コンパイルエラー。

私の問題は、 currentObjectのヌルとして初期化されていると思いますか?

更新:ここでは、実際のコード

:事前に

var protCoord:Coordinates  = new Coordinates() 
var prevprotCoord:Coordinates = new Coordinates() 
var coordMap = mutable.Map[Coordinates, GenomeCoordinates]() 
var protein:EnsemblProteinEntry = null 
var codingLength = 0 

for (gtfEntry <- gtfEntries.toStream) { 
    if (gtfEntry.isGene) 
    mapping.addGene(new GTFGeneEntry(gtfEntry)) 
    if(gtfEntry.isTranscript){ 
    mapping.addTranscriptID(gtfEntry) 
    if(protein != null) protein.multiMapCoordinates = coordMap // **I'm receiving the error here** 
    var protein = fastaEntries.getOrElse(gtfEntry.transcriptIdentifier, null) 
    if(protein == null) 
    protein = new EnsemblProteinEntry() 
    protCoord = new Coordinates() 
    prevprotCoord = new Coordinates() 
    coordMap = mutable.Map[Coordinates, GenomeCoordinates]() 
    codingLength = 0 
} 

感謝を。

+0

詳細情報が必要です。コードは正常に見えます。 – pamu

+0

注意:Scalaで 'null'を使わないようにしてください。代わりに' Some'と 'None'というサブタイプを使って' Option'を使ってください。参照してください:http://stackoverflow.com/questions/9698391/when-to-use-option – Jesper

+0

私はあなたが '{何の< - ...} {theVar = whatever}'を実行すればうまくいくと思いますが、このすべてのエンコーディング。 – pedrofurla

答えて

2

ループ内には、var proteinが2回定義されています。問題は、定義される前にループ内でproteinを使用しようとしていることです。

関連する問題