2016-09-25 11 views
1
arrayA = ["arrayA_1", "arrayA_2", "arrayA_3", "arrayA_4", "arrayA_5"] 
arrayB = ["arrayB_1", "arrayB_2", "arrayB_3", "arrayB_4", "arrayB_5"] 
arrayC = ["arrayC_1", "arrayC_2", "arrayC_3", "arrayC_4", "arrayC_5"] 


arrayA.length.times do |x| 
    p list = [ [arrayA[x]] , [arrayB[x]] , [arrayC[x]] ]                               
end 

この単純なRubyコードブロックをelispでどのように複製するのですか?リストを構築するためのelispのデータ構造/ワークフロー

+0

もライブラリ[dash.el]を参照してください(https://github.com/magnars/dash.el)および[seq.el](https://github.com/NicolasPetton/seq.el)を参照してください。 – Ehvince

+0

恐ろしい!私は以前気付いたことがありますが、私がelispで経験したことではないので、私の本能は生態系の騒音を無視し、代わりに基礎に焦点を当てることでした。しかし、今あなたがそれらを言及しただけでなく、他の人もやったように、彼らは私にとって十分に普及しているように見えます。ありがとう:) –

+0

私は奇妙な呼び出しインターフェイスを持っているので、私はdash.elを使用しません。 –

答えて

4
ELISP> (cl-mapcar 'concat 
     '("firstA" "secondA" "thirdA") 
     '("firstB" "secondB" "thirdB") 
     '("firstC" "secondC" "thirdC")) 
("firstAfirstBfirstC" "secondAsecondBsecondC" "thirdAthirdBthirdC") 
1

ヘルプフォームを更新 素晴らしい#emacs IRCチャンネルの@ freenode.net(wgreenhouseに感謝し、フォーサ、paluche、その他)

(setq listA '("firstA" "secondA" "thirdA")) 
(setq listB '("firstB" "secondB" "thirdB")) 
(setq listC '("firstC" "secondC" "thirdC")) 

(setq mylist (cl-loop for a in listA 
         for b in listB 
         for c in listC 
         collect (concat a b c))) 

(print mylist (current-buffer)) 
関連する問題