summaryrefslogtreecommitdiff
path: root/sample/list.rb
diff options
context:
space:
mode:
authorYukihiro Matsumoto <matz@ruby-lang.org>1994-12-08 14:17:29 +0900
committerTakashi Kokubun <takashikkbn@gmail.com>2019-08-17 22:09:30 +0900
commit00e36aa09f54925c2f9c30524b48f4f54a9adb23 (patch)
tree57bf15576109b53406796c66b29d5e11d9fd99c0 /sample/list.rb
parent4dfd93c72a9a221c5575c5888483f2fb55c82117 (diff)
version 0.60v0_60
https://cache.ruby-lang.org/pub/ruby/1.0/ruby-0.60.tar.gz Thu Dec 8 14:17:29 1994 Yukihiro Matsumoto (matz@ix-02) * 0.60 released - alpha test baseline.
Diffstat (limited to 'sample/list.rb')
-rw-r--r--sample/list.rb42
1 files changed, 27 insertions, 15 deletions
diff --git a/sample/list.rb b/sample/list.rb
index e0b5b38..1a20c95 100644
--- a/sample/list.rb
+++ b/sample/list.rb
@@ -1,10 +1,16 @@
-# Linked list program
+# Linked list example
class MyElem
+ #クラスメソッド(相当)の定義
def MyElem.new(item)
- super.init(item)
+ # スーパークラスのメソッドの呼び出し(この場合はクラスClass)
+ elm = super # 変数宣言は要らない
+ #elmに対するメソッドの呼び出し
+ elm.init(item)
end
-
+
+ # 通常のメソッド定義
def init(item)
+ # @変数はインスタンス変数(宣言は要らない)
@data = item
@next = nil
self
@@ -18,6 +24,7 @@ class MyElem
@next
end
+ # 「obj.data = val」としたときに暗黙に呼ばれるメソッド
def next=(new)
@next = new
end
@@ -42,9 +49,12 @@ class MyList
end
end
+ # オブジェクトを文字列に変換するメソッド
+ # これを再定義するとprintでの表現が変わる
def to_s
str = "<MyList:\n";
for elt in self
+ # 「str = str + elt.data.to_s + "\n"」の省略形
str += elt.data.to_s + "\n"
end
str += ">"
@@ -66,16 +76,18 @@ class Point
sprintf("%d@%d", @x, @y)
end
end
-
-list1 = MyList.new
-list1.add_to_list(10)
-list1.add_to_list(20)
-list1.add_to_list(Point.new(2, 3))
-list1.add_to_list(Point.new(4, 5))
-list2 = MyList.new
-list2.add_to_list(20)
-list2.add_to_list(Point.new(4, 5))
-list2.add_to_list(list1)
-print("list1:\n", list1, "\n")
-print("list2:\n", list2, "\n")
+# 大域変数は`$'で始まる.
+$list1 = MyList.new
+$list1.add_to_list(10)
+$list1.add_to_list(20)
+$list1.add_to_list(Point.new(2, 3))
+$list1.add_to_list(Point.new(4, 5))
+$list2 = MyList.new
+$list2.add_to_list(20)
+$list2.add_to_list(Point.new(4, 5))
+$list2.add_to_list($list1)
+
+# 曖昧でない限りメソッド呼び出しの括弧は省略できる
+print "list1:\n", $list1, "\n"
+print "list2:\n", $list2, "\n"