2013-07-31 2 views
0

У меня есть следующий код, который в основном добавляет все corect, но Sequence не учитывает вверх. Любая идея, что там не так?Последовательность не подсчитывается вверх

globalMap.containsKey(row1.File_Name.toUpperCase()) ? 
    (String)globalMap.get(row1.File_Name.toUpperCase()) : 
    (globalMap.put(row1.File_Name.toUpperCase(), row1.File_Name.toUpperCase() + 
     "-ID-" + Numeric.sequence(row1.File_Name, 1, +1).toString()) == null ? 
    (String)globalMap.get(row1.File_Name.toUpperCase()) : 
    (String)globalMap.get(row1.File_Name.toUpperCase()) 

Заранее благодарим за консультацию!

+4

Зачем вам писать такой код? Особенно второй тернарный оператор - действительно уродливый хак ... Если вы просто разделите его на части, вы, вероятно, можете легко определить, что происходит не так. –

+2

Не считается хорошей практикой, когда утверждения, используемые в тройном операторе, имеют побочные эффекты. Я думаю, что код будет легче понять и объяснить, если вы использовали какие-то блоки 'if' ... –

+0

не должна ли эта часть быть одной изолированной частью? Numeric.sequence (row1.File_Name, 1, +1) .toString()) == null? (String) globalMap.get (row1.File_Name.toUpperCase() ")": (String) globalMap.get (row1.File_Name.toUpperCase()). есть скобка, которой не должно быть. я отметил его с помощью "" – Wandang

ответ

0

Ах, выяснилось, пришлось переключить истинные и ложные условия, так как я хотел подсчитать те же самые.

Я предполагаю, что мой мозг был слишком испорчен вчера - новый день, освежил мозг и сделал.

globalMap.containsKey(row1.File_Name.toUpperCase()) ? 
    (globalMap.put(row1.File_Name.toUpperCase(), row1.File_Name.toUpperCase() + 
     "-ID-" + Numeric.sequence(row1.File_Name, 1, +1).toString()) == null ? 
      (String)globalMap.get(row1.File_Name.toUpperCase()) : 
      (String)globalMap.get(row1.File_Name.toUpperCase()) 
    ): 
    (String)globalMap.get(row1.File_Name.toUpperCase()) 
1

Я не вижу, где вы на самом деле постоянно увеличиваете любое значение, возможно, именно поэтому ваша последовательность не увеличивается.

if(globalMap.containsKey(row1.File_Name.toUpperCase())){ 
    (String)globalMap.get(row1.File_Name.toUpperCase()) 
}else{ 
    if((globalMap.put(row1.File_Name.toUpperCase(), row1.File_Name.toUpperCase() + 
    "-ID-" + Numeric.sequence(row1.File_Name, 1, +1).toString()) == null){ 
     (String)globalMap.get(row1.File_Name.toUpperCase()); 
    }else{ 
     (String)globalMap.get(row1.File_Name.toUpperCase()) 
    } 
} 

Вот как выглядел бы ваш код с инструкциями if/else. Я не компилировал этот код и не уверен, что он скомпилируется, поскольку я не могу легко отслеживать эти скобки.