0

次のようにセッション配列に追加するコードがいくつかあります。

if policy_session[:modalities] #array exists just add new value to it
    policy_session[:modalities] << [params[:modality], policy_session[:mode_list]]
else #the array does't exist yet, so create and add first one. 
    policy_session[:modalities] = [params[:modality], policy_session[:mode_list]]

:modalitiesしかし、これは私の配列に恐ろしいフォーマットを生成します。次のようになります。

>> policy_session[:modalities]
>># [["var_1"], "1",[["var_2"], ["2"]], [["var_3"], ["1"]]]

これは、私のプログラムの後半で試して反復するのは非常に面倒です。

色々と試してみましたが、これ以上に良いものは思いつきませんでした。

出力が読み取り可能になるように、配列を作成してから追加するにはどうすればよいですか? そして、すべて同じフォーマットです!

私はこのようなものが欲しいです:

>>policy_session[:modalities]
>># [["var_1", "1"], ["var_2", "2"], ["var_3", "1"]]
4

1 に答える 1

1

このようなもの...

policy_session[:modalities] ||= [] # set it to an empty array if nil
policy_session[:modalities] << [params[:modality], policy_session[:mode_list]]

編集:余分な[]を取り除くには...

policy_session[:modalities] ||= [] # set it to an empty array if nil
policy_session[:modalities] << [params[:modality], policy_session[:mode_list]].flatten
于 2012-11-14T17:39:17.280 に答える