先看**:
song.rb
class song
def initialize(name, artist, duration)
@name = name
@artist = artist
@duration = duration
enddef to_s
"song: #@name--@artist (#@duration)"
endend
class karaokesong < song
def initialize(name, artist, duration, lyrics)
super(name, artist, duration)
@lyrics = lyrics
enddef to_s
super + " [#@lyrics]"
endend
#song = karaokesong.new("shenbin", "fnl", 260, "and now, the...")
#puts song.to_s
#puts song.inspect
songlist.rb
class songlist
def initialize
@songs = array.new
[email protected](song)
self
enddef delete_first
@songs.shift
enddef delete_last
@songs.pop
enddef (index)
@songs[index]
endend
test_song_list.rb
require "test/unit"
require "song.rb"
require "songlist.rb"
class testsonglist < test::unit::testcase
def test_delete
list = songlist.new
s1 = song.new('t1', 'a1', 1)
s2 = song.new('t2', 'a2', 2)
s3 = song.new('t3', 'a3', 3)
s4 = song.new('t4', 'a4', 4)
assert_equal(s1, list[0])
assert_equal(s3, list[2])
assert_nil(list[4])
assert_equal(s1, list.delete_first)
assert_equal(s2, list.delete_first)
assert_equal(s4, list.delete_last)
assert_equal(s3, list.delete_last)
assert_nil(list.delete_last)
endend
執行後輸出:
loaded suite test_song_list
started
.finished in 0.0 seconds.
1 tests, 8 assertions, 0 failures, 0 errors
ruby中的模組
什麼是模組 模組 module 是ruby特有的功能之一。類用來表現具有資料與行為 程式 的 東西 而模組大致來說,則是只有程式部分的集合體。類與模組最大的不同在於 1.模組不能建立例項 2.模組不能繼承 模組的用法 1 提供命名空間 命名空間 namespace 是為了讓方法 常數 類名稱不互相衝...
Ruby中的迴圈
1 首先是while迴圈和until迴圈 這是兩種相反的迴圈,舉例說明 x 1 until x 100 puts x x x 2 end 輸出 124 8163264 x 1 until x 100 puts x x x 2 break if x 200 end 永遠都不會執行 而while與unt...
ruby 中的符號
1.1 建立乙個繫結到特定物件的class a my string class book to sym 2.book 3.track.to s 4.track 2.相同的符號是乙個物件,相同的字元並不一定是乙個物件 這就是符號和字串最大的差別,符號是不可變的,不能對乙個符號進行修改。所以說,兩個看起...