2016-10-18 22 views
2

が、私はこれを行うが、私はカントを取得しようとしている、私はこのような何かを達成したい:すでに作成されたリストに値を追加するにはどうすればよいですか?

例入力:[1,2,3,4]

出力例:[「ゼロ」、あなたはこのためにlists:mapを使用していないのはなぜ "1"、 "2"、 "4"]

Data_list = Unknown_list_of_numbers, 
Final_list = ["zero"], 
lists:foreach(
    fun(Number) -> 
     case Number of 
     1 -> 
      Final_list.append("one"); 
     2 -> 
      Final_list.append("two"); 
     %% Few more case clauses %% 
     end 
    end, 
    Data_list 
), 
function_to_do_something_with_name_of_numbers(Final_list). 
+0

入力と出力のためのデータを追加します。 –

+0

こんにちは@Atomic_alarmコードの前に追加しました –

答えて

2

lists:mapは、リストのすべての要素を反復し、要素に関数を適用します。

my_function(Input) -> 
    F=fun(X) -> 
     case X of 
      1 -> "one"; 
      2 -> "two"; 
      3 -> "three"; 
      % and so on... you get the idea 
      _ -> "-" 
     end 
    end, 

    lists:map(F, Input). 

これはあなたのコアロジックになります。既存のリストにその結果を追加するには、単に「++ '演算子とそれを追加します。

Input=[1,2,3,4,5,6,7,8]. 
["zero"] ++ my_function(Input). 

はしかし注意してください、++オペレータはnaiveleyを使用ひどいパフォーマンスの問題を持っている(それは基本的にすべての項目を対処します追加する前の左側のリスト)。 iterativeleyを繰り返し使用してリストを作成したい場合は、先頭を累積してから逆にする方がよいでしょう。具体的にはthis questionを参照してください。

関連する問題