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

回答編集履歴

5

編集

2019/12/06 14:44

投稿

退会済みユーザー
answer CHANGED
@@ -3,7 +3,7 @@
3
3
  クラスM::BはモジュールMを名前空間にして、クラスAを継承している。クラスAの定数を参照できる。
4
4
  クラス名はただの定数なので、パスが異なれば同じ名前のクラスを定義できる。
5
5
  クラスA::BもクラスBもトップレベルに定義されている。クラス名がA::Bだからといって継承関係はない。
6
- クラスM::Bはトップレベルに定義ていない。
6
+ クラスM::Bはトップレベルに定義されていない。
7
7
  ```Ruby
8
8
  class A
9
9
  CONST = "Hello, world"

4

編集

2019/12/06 14:44

投稿

退会済みユーザー
answer CHANGED
@@ -2,7 +2,7 @@
2
2
  クラスBはクラスAを継承している。クラスAの定数を参照できる。
3
3
  クラスM::BはモジュールMを名前空間にして、クラスAを継承している。クラスAの定数を参照できる。
4
4
  クラス名はただの定数なので、パスが異なれば同じ名前のクラスを定義できる。
5
- クラスA::BもクラスBもトップレベルに定義されている。(※クラス名がA::Bだからといって継承関係はない。
5
+ クラスA::BもクラスBもトップレベルに定義されている。クラス名がA::Bだからといって継承関係はない。
6
6
  クラスM::Bはトップレベルに定義していない。
7
7
  ```Ruby
8
8
  class A
@@ -27,10 +27,6 @@
27
27
  p B.ancestors
28
28
  p B.new.method
29
29
 
30
- class A
31
- CONST = "Hello, world"
32
- end
33
-
34
30
  module M
35
31
  class B < A
36
32
  def method
@@ -42,4 +38,20 @@
42
38
  p M::B.ancestors
43
39
  p M::B.new.method
44
40
 
41
+ ```
42
+ 追加
43
+ 以下のクラスA::BはクラスAを継承していないが、ネスト関係の外側にCONSTが存在するため参照できる。
44
+ ```Ruby
45
+ class A
46
+ CONST = "Hello, world"
47
+ class B
48
+ def method
49
+ CONST
50
+ end
51
+ end
52
+ end
53
+
54
+ p A::B.ancestors
55
+ p A::B.new.method
56
+
45
57
  ```

3

編集

2019/12/06 14:32

投稿

退会済みユーザー
answer CHANGED
@@ -1,7 +1,9 @@
1
1
  クラスA::BはクラスAを継承していない。パスを示せばクラスAの定数を参照できる。
2
2
  クラスBはクラスAを継承している。クラスAの定数を参照できる。
3
+ クラスM::BはモジュールMを名前空間にして、クラスAを継承している。クラスAの定数を参照できる。
3
4
  クラス名はただの定数なので、パスが異なれば同じ名前のクラスを定義できる。
4
5
  クラスA::BもクラスBもトップレベルに定義されている。(※クラス名がA::Bだからといって継承関係はない。)
6
+ クラスM::Bはトップレベルに定義していない。
5
7
  ```Ruby
6
8
  class A
7
9
  CONST = "Hello, world"
@@ -25,4 +27,19 @@
25
27
  p B.ancestors
26
28
  p B.new.method
27
29
 
30
+ class A
31
+ CONST = "Hello, world"
32
+ end
33
+
34
+ module M
35
+ class B < A
36
+ def method
37
+ CONST
38
+ end
39
+ end
40
+ end
41
+
42
+ p M::B.ancestors
43
+ p M::B.new.method
44
+
28
45
  ```

2

編集

2019/12/06 14:24

投稿

退会済みユーザー
answer CHANGED
@@ -1,5 +1,7 @@
1
1
  クラスA::BはクラスAを継承していない。パスを示せばクラスAの定数を参照できる。
2
2
  クラスBはクラスAを継承している。クラスAの定数を参照できる。
3
+ クラス名はただの定数なので、パスが異なれば同じ名前のクラスを定義できる。
4
+ クラスA::BもクラスBもトップレベルに定義されている。(※クラス名がA::Bだからといって継承関係はない。)
3
5
  ```Ruby
4
6
  class A
5
7
  CONST = "Hello, world"

1

編集

2019/12/06 14:15

投稿

退会済みユーザー
answer CHANGED
@@ -1,5 +1,5 @@
1
1
  クラスA::BはクラスAを継承していない。パスを示せばクラスAの定数を参照できる。
2
- クラスCはクラスAを継承している。クラスAの定数を参照できる。
2
+ クラスBはクラスAを継承している。クラスAの定数を参照できる。
3
3
  ```Ruby
4
4
  class A
5
5
  CONST = "Hello, world"
@@ -14,13 +14,13 @@
14
14
  p A::B.ancestors
15
15
  p A::B.new.method
16
16
 
17
- class C < A
17
+ class B < A
18
18
  def method
19
19
  CONST
20
20
  end
21
21
  end
22
22
 
23
- p C.ancestors
23
+ p B.ancestors
24
- p C.new.method
24
+ p B.new.method
25
25
 
26
26
  ```