回答編集履歴

2

コメントを見ての追記

2017/01/04 14:42

投稿

otn
otn

スコア84555

test CHANGED
@@ -49,3 +49,37 @@
49
49
  end
50
50
 
51
51
  ```
52
+
53
+ #さらにコメント見て追記
54
+
55
+ ```Ruby
56
+
57
+ wk = @rest[:volume]
58
+
59
+ for a in 0...data do
60
+
61
+ for b in 0...datas do
62
+
63
+ #注文リストと在庫リストのマッチングを行う
64
+
65
+ if @rest[:name][b] == @book[:name][a]
66
+
67
+ wk[b]-=1
68
+
69
+ end
70
+
71
+ end
72
+
73
+ end
74
+
75
+ @rest[:volume] = wk
76
+
77
+ @rest.to_csv をファイルに書く
78
+
79
+ ```
80
+
81
+ forの所は、Arrayの各種メソッドを使えばもっとシンプルに出来ますね。
82
+
83
+
84
+
85
+ あと、restやbookをインスタンス変数にしている理由が分かりません。

1

サンプルの追加

2017/01/04 14:42

投稿

otn
otn

スコア84555

test CHANGED
@@ -3,3 +3,49 @@
3
3
  案1.別ファイル名で書きだして、クローズしてから、元ファイルを削除して、リネームする。
4
4
 
5
5
  案2.読み込みオープンした物をクローズしてから、同じファイルを書き込みオープンして上書きする。デメリットとして書き込み中にプログラムが落ちるとデータが失われる。
6
+
7
+
8
+
9
+ #コメントを見ての追記
10
+
11
+ サンプル:数字の書かれたファイルを読んで、数字を+1してファイルを更新する
12
+
13
+ ```Ruby
14
+
15
+ #案1
16
+
17
+ FILENAME="foo"
18
+
19
+ FILENAME_NEW=FILENAME+".new"
20
+
21
+ n = IO.read(FILENAME).to_i
22
+
23
+ n += 1
24
+
25
+ open(FILENAME_NEW,"w") do |f|
26
+
27
+ f.write(n)
28
+
29
+ end
30
+
31
+ File.delete(FILENAME)
32
+
33
+ File.rename(FILENAME_NEW, FILENAME)
34
+
35
+
36
+
37
+ #案2
38
+
39
+ FILENAME="foo"
40
+
41
+ n = IO.read(FILENAME).to_i
42
+
43
+ n += 1
44
+
45
+ open(FILENAME,"w") do |f|
46
+
47
+ f.write(n)
48
+
49
+ end
50
+
51
+ ```