teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

7

質問内容の文章の追加

2019/07/26 02:00

投稿

kazuki0714
kazuki0714

スコア28

title CHANGED
File without changes
body CHANGED
@@ -56,6 +56,16 @@
56
56
  こちらの原因教えていただけますでしょうか?
57
57
 
58
58
  ![![イメージ説明](3d138c1fe51c61d2e19f51b42ae3d46f.png)
59
+
60
+ `File.join` にしてもエラーになる(これはsort.eachにしてないから)
61
+
62
+ ![イメージ説明](1b2359491e5e417e1063883c5c645870.png)
63
+
64
+ `File.join` と `sort.each` を忘れずに書いても二重に出力されてしまいます
65
+
66
+ ![イメージ説明](20150ed34dd54ee2a424db470d0d901d.png)
67
+
68
+
59
69
  ```Ruby
60
70
  # main.rb
61
71
  # Your code here!
@@ -64,8 +74,6 @@
64
74
  require './honda'
65
75
  require './nissan'
66
76
 
67
-
68
-
69
77
  def main
70
78
 
71
79
  cars = []

6

質問文の追記

2019/07/26 02:00

投稿

kazuki0714
kazuki0714

スコア28

title CHANGED
File without changes
body CHANGED
@@ -47,6 +47,15 @@
47
47
 
48
48
  ![イメージ説明](04a4177b8583dcf0ad5d1e6cca4f5d1c.png)
49
49
 
50
+
51
+ 【追記④】
52
+ `Dir[File.dirname(__FILE__) + '*.rb'].sort.each {|file| require file }` ではなく
53
+ `Dir[File.dirname(__FILE__) + '/*.rb'].sort.each {|file| require file }` でした。
54
+
55
+ これで実行すると下のスクショのように2度出力されてしまいます。
56
+ こちらの原因教えていただけますでしょうか?
57
+
58
+ ![![イメージ説明](3d138c1fe51c61d2e19f51b42ae3d46f.png)
50
59
  ```Ruby
51
60
  # main.rb
52
61
  # Your code here!

5

コードの修正、文章の追加

2019/07/26 01:40

投稿

kazuki0714
kazuki0714

スコア28

title CHANGED
File without changes
body CHANGED
@@ -20,10 +20,33 @@
20
20
  以下のように「アクセル良好」、「ブレーキ良好」が二重に出力されてしまいます。
21
21
  これは `if __FILE__ == $0` を出力してるのが原因でしょうか?
22
22
 
23
+ => car.rb を修正して解決済み
24
+
23
25
  ![イメージ説明](ae0b3caa61631eabfd2a9a877bf77b1a.png)
24
26
 
27
+ 【追記③】アドバイスを元に何パターンか試しました。上手く行った部分もあるのですが出力の部分で苦戦してます。
28
+ ・ `require` と `require_relative` 両方で上手くいった
29
+ ・ `Dir[File.dirname(__FILE__) + '/*.rb'].each {|file| require file } ` だとエラー発生
30
+ ・ `if __FILE__ == $0` だと上手く行くが `puts` だとエラーがでる
25
31
 
32
+ 追記③の質問
33
+ ・`if __FILE__ == $0` ではなく `puts` で出力する方法はどうすればいいか?(もう `if __FILE__ == $0` するもんだと覚える方がいいのか)
34
+ ・ `Dir[File.dirname(__FILE__) + '/*.rb'].each {|file| require file } ` の正しい記述方法
26
35
 
36
+ お分かりであればお願いいたします。
37
+
38
+ ↓こちらは上手くいった例
39
+
40
+ ![イメージ説明](f3fc8cb772550987d89c6b024db77f15.png)
41
+
42
+ ↓ `if __FILE__ == $0` だと上手く行くが `puts` だとエラーになった例
43
+
44
+ ![イメージ説明](f04a4e5e34977f30245a55127f1675af.png)
45
+
46
+ ↓ `require` ではなく `Dir[File.dirname(__FILE__) + '/*.rb'].each {|file| require file } ` だと失敗
47
+
48
+ ![イメージ説明](04a4177b8583dcf0ad5d1e6cca4f5d1c.png)
49
+
27
50
  ```Ruby
28
51
  # main.rb
29
52
  # Your code here!

4

スクショの追加

2019/07/25 08:18

投稿

kazuki0714
kazuki0714

スコア28

title CHANGED
File without changes
body CHANGED
@@ -16,11 +16,14 @@
16
16
 
17
17
  【追記②】
18
18
 
19
- `car.rb` に `attr_accessor :capacity, :price, :speed` を追加して出力したら上手く行ったんですが、「アクセル良好」、「ブレーキ良好」が二重に出力されてしまいます。
19
+ `car.rb` に `attr_accessor :capacity, :price, :speed` を追加して出力したら上手く行ったんですが、
20
+ 以下のように「アクセル良好」、「ブレーキ良好」が二重に出力されてしまいます。
20
21
  これは `if __FILE__ == $0` を出力してるのが原因でしょうか?
21
22
 
23
+ ![イメージ説明](ae0b3caa61631eabfd2a9a877bf77b1a.png)
22
24
 
23
25
 
26
+
24
27
  ```Ruby
25
28
  # main.rb
26
29
  # Your code here!

3

コードとスクショの追加

2019/07/25 07:21

投稿

kazuki0714
kazuki0714

スコア28

title CHANGED
File without changes
body CHANGED
@@ -8,14 +8,19 @@
8
8
 
9
9
  ![イメージ説明](6d8833f8ab77dfcec5a8579aa5830feb.png)
10
10
 
11
- 【追記】回答を参考に以下に直しましたが今度は `NoMethodError` が発生しました。
11
+ 【追記】回答を参考に以下に直しましたが今度は `NoMethodError` が発生しました。
12
12
  こちらの原因お分かりでしょうか?
13
13
  またソースコードも修正しました。
14
14
 
15
15
  ![イメージ説明](0d35c1ae08af6533fdf6a8478fb8c57f.png)
16
16
 
17
+ 【追記②】
17
18
 
19
+ `car.rb` に `attr_accessor :capacity, :price, :speed` を追加して出力したら上手く行ったんですが、「アクセル良好」、「ブレーキ良好」が二重に出力されてしまいます。
20
+ これは `if __FILE__ == $0` を出力してるのが原因でしょうか?
18
21
 
22
+
23
+
19
24
  ```Ruby
20
25
  # main.rb
21
26
  # Your code here!
@@ -24,15 +29,14 @@
24
29
  require './honda'
25
30
  require './nissan'
26
31
 
27
- # Dir[File.dirname(__FILE__) + '*.rb'].each {|file| require file } #上記のrequireに変更
28
32
 
29
33
 
30
34
  def main
31
35
 
32
36
  cars = []
33
- cars << Honda.new(100, 8, 10)
37
+ cars << Honda.new(8, 100, 10)
34
- cars << Nissan.new(50, 5, 10)
38
+ cars << Nissan.new(5, 50, 10)
35
- cars << Ferrari.new(500, 2, 100)
39
+ cars << Ferrari.new(2, 200, 100)
36
40
 
37
41
  cars.each do |car|
38
42
  puts " 定員:#{car.capacity}人 価格:#{car.price}円 加速:#{car.speed}km 機能:#{car.accel},#{car.brake} "
@@ -43,11 +47,13 @@
43
47
  main
44
48
  end
45
49
 
50
+
46
51
  ```
47
52
 
48
53
  ```Ruby
49
54
  # car.rb
50
55
  class Car
56
+ attr_accessor :capacity, :price, :speed
51
57
  def initialize(capacity, price, speed)
52
58
  @capacity = capacity
53
59
  @price = price
@@ -63,6 +69,7 @@
63
69
  end
64
70
  end
65
71
 
72
+
66
73
  ```
67
74
 
68
75
  ```Ruby

2

スクショの追加。コードの修正

2019/07/25 07:18

投稿

kazuki0714
kazuki0714

スコア28

title CHANGED
File without changes
body CHANGED
@@ -8,18 +8,31 @@
8
8
 
9
9
  ![イメージ説明](6d8833f8ab77dfcec5a8579aa5830feb.png)
10
10
 
11
+ 【追記】回答を参考に以下に直しましたが今度は `NoMethodError` が発生しました。
12
+ こちらの原因お分かりでしょうか?
13
+ またソースコードも修正しました。
11
14
 
15
+ ![イメージ説明](0d35c1ae08af6533fdf6a8478fb8c57f.png)
16
+
17
+
18
+
12
19
  ```Ruby
13
20
  # main.rb
21
+ # Your code here!
22
+ require './car'
14
- Dir[File.dirname(__FILE__) + '*.rb'].each {|file| require file }
23
+ require './ferrari'
24
+ require './honda'
25
+ require './nissan'
15
26
 
27
+ # Dir[File.dirname(__FILE__) + '*.rb'].each {|file| require file } #上記のrequireに変更
16
28
 
29
+
17
30
  def main
18
31
 
19
32
  cars = []
20
- cars = Honda.new(100, 8, 10)
33
+ cars << Honda.new(100, 8, 10)
21
- cars = Nissan.new(50, 5, 10)
34
+ cars << Nissan.new(50, 5, 10)
22
- cars = Ferrari.new(500, 2, 100)
35
+ cars << Ferrari.new(500, 2, 100)
23
36
 
24
37
  cars.each do |car|
25
38
  puts " 定員:#{car.capacity}人 価格:#{car.price}円 加速:#{car.speed}km 機能:#{car.accel},#{car.brake} "

1

コードの追加

2019/07/25 06:39

投稿

kazuki0714
kazuki0714

スコア28

title CHANGED
File without changes
body CHANGED
@@ -4,11 +4,13 @@
4
4
 
5
5
  selfメソッドにしたり色々試したのですがエラーが直りません。(`car.rb` 中で `@capacity` を `self.capacity` に変更したり)
6
6
 
7
+ 原因わかる方、ご教授いただけませんでしょうか?
8
+
7
9
  ![イメージ説明](6d8833f8ab77dfcec5a8579aa5830feb.png)
8
10
 
9
- 原因わかる方、ご教授いただけませんでしょうか?
10
11
 
11
12
  ```Ruby
13
+ # main.rb
12
14
  Dir[File.dirname(__FILE__) + '*.rb'].each {|file| require file }
13
15
 
14
16
 
@@ -28,4 +30,42 @@
28
30
  main
29
31
  end
30
32
 
33
+ ```
34
+
35
+ ```Ruby
36
+ # car.rb
37
+ class Car
38
+ def initialize(capacity, price, speed)
39
+ @capacity = capacity
40
+ @price = price
41
+ @speed = speed
42
+ end
43
+
44
+ def accel
45
+ p "アクセル良好"
46
+ end
47
+
48
+ def brake
49
+ p "ブレーキ良好"
50
+ end
51
+ end
52
+
53
+ ```
54
+
55
+ ```Ruby
56
+ # ferrari.rb
57
+ class Ferrari < Car
58
+ end
59
+ ```
60
+
61
+ ```Ruby
62
+ # honda.rb
63
+ class Honda < Car
64
+ end
65
+ ```
66
+
67
+ ```Ruby
68
+ # nissan.rb
69
+ class Nissan < Car
70
+ end
31
71
  ```