回答編集履歴

2

インスタンスメソッド。。。

2017/02/20 12:14

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -1,4 +1,4 @@
1
- `a.Car.name`では、`a.Car`という**メソッド呼び出し**であり、Test2モジュールの中の`Car.name`は`Car`という**定数呼び出し**です。KazモジュールにはCarという定数※とCarというメソッドの**同じ名前で違うもの**が同時に存在し、定数のCarはCarという**クラス**で、メソッド呼び出しはCarをnewした**インスタンス**です。クラスにはデフォルトで`name`メソッドがあり、自分の名前(クラス名)を返すので、どちらもエラーになりません。`name`の代わりに`class`とすると何のクラスのオブジェクトなのかがよくわかると思います。
1
+ `a.Car.name`では、`a.Car`という**メソッド呼び出し**であり、Test2モジュールの中の`Car.name`は`Car`という**定数呼び出し**です。KazモジュールにはCarという定数※とCarというインスタンスメソッドの**同じ名前で違うもの**が同時に存在し、定数のCarはCarという**クラス**で、メソッド呼び出しはCarをnewした**インスタンス**です。クラスにはデフォルトで`name`メソッドがあり、自分の名前(クラス名)を返すので、どちらもエラーになりません。`name`の代わりに`class`とすると何のクラスのオブジェクトなのかがよくわかると思います。
2
2
 
3
3
 
4
4
 

1

実際はObjectへのconst_set

2017/02/20 12:14

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -1,4 +1,8 @@
1
- `a.Car.name`では、`a.Car`という**メソッド呼び出し**であり、Test2モジュールの中の`Car.name`は`Car`という**定数呼び出し**です。KazモジュールにはCarという定数とCarというメソッドの**同じ名前で違うもの**が同時に存在し、定数のCarはCarという**クラス**で、メソッド呼び出しはCarをnewした**インスタンス**です。クラスにはデフォルトで`name`メソッドがあり、自分の名前(クラス名)を返すので、どちらもエラーになりません。`name`の代わりに`class`とすると何のクラスのオブジェクトなのかがよくわかると思います。
1
+ `a.Car.name`では、`a.Car`という**メソッド呼び出し**であり、Test2モジュールの中の`Car.name`は`Car`という**定数呼び出し**です。KazモジュールにはCarという定数とCarというメソッドの**同じ名前で違うもの**が同時に存在し、定数のCarはCarという**クラス**で、メソッド呼び出しはCarをnewした**インスタンス**です。クラスにはデフォルトで`name`メソッドがあり、自分の名前(クラス名)を返すので、どちらもエラーになりません。`name`の代わりに`class`とすると何のクラスのオブジェクトなのかがよくわかると思います。
2
+
3
+
4
+
5
+ ※ Car定数が定義されているのはObjectですが、定数参照により辿り着くことができるため、全ての場所にCar定数が存在することになります。
2
6
 
3
7
 
4
8