2011-01-14 12 views
2

は、私がこれまで持っていることであるグルーヴィーな方法からカンマ区切りの文字列を作成します。2つのリスト

def imageColumns = ["products_image", "procuts_subimage1", "products_subimage2", "prodcuts_subimage3", "products_subimage4"]  
def imageValues = ["1.jpg","2.jpg","3.jpg"] 
def imageColumnsValues = [] 

// only care for columns with values 
imageValues.eachWithIndex { image,i -> 
    imageColumnsValues << "${imageColumns[i]} = '${image}'" 
} 

println imageColumnValuePair.join(", ") 

それは動作しますが、私はそれがより良いかもしれないと思います。 collectWithIndexがあることを願っています...提案はありますか?

答えて

6

にはcollectWithIndexありませんが、あなたは少しの努力と同じ結果を達成することができます。これは、項目のリストと0サイズ(リスト)から数字の範囲とり

def imageColumns = ["products_image", "procuts_subimage1", "products_subimage2", "prodcuts_subimage3", "products_subimage4"] 
def imageValues = ["1.jpg","2.jpg","3.jpg"] 

def imageColumnsValues = [imageValues, 0..<imageValues.size()].transpose().collect { image, i -> 
    "${imageColumns[i]} = '${image}'" 
} 

println imageColumnsValues.join(", ") 

から1を、そしてそれらをzip圧縮します一緒にtranspose。それで、あなたはその結果をちょうど集めることができます。

+1

私はtranspose()!が好きです。範囲の必要は単に、そこではない: DEF imageColumnsValues = [imageValues、imageColumns] .transpose()を収集{値、カラム - > "$ {値} = '$ {列}'" } 。 となります。ありがとう! – Micor

関連する問題