初學者Ruby筆記
1 . 在ruby中,你所操作的一切都是對象,操作的結果也是對象;Tcl操作的結果都是String類型. tcl不支持.net中的形如int , double ,char等等類型,唯一支持的就是string類型
2 . 類的定義要在class..end之間,類名必須以大寫字母開始,也就是說類名要是個常量.
3. 若某個類已經被定義過,此時又用相同的類名進行類定義的話,就意味着對原有的類的定義進行追加
例如: class Test
def test
puts "test"
end
end
class Test
def test1
puts "test1"
end
end
對於Test類的方法,先定義test後定義test1,兩者都可用.
4. 特殊變量可以用{}來求值,如#{},全局變量以$開頭,類變量以@@開頭,且必須初始化,實例變量以@開頭。
5. " <=>" 方法通常意思爲比較,返回值爲-1,0或1分別表示小於,等於和大於. 如: 3<=>4 返回 -1,4<=>3返回 1
6. 方法名應該以小寫字母開始,如果你使用大寫字母開始,Ruby解釋器會認爲它是一個常量,這樣可能會帶來名稱解析錯誤
如: def Test
p "test"
end
運行 p Test ,會報 uninitialized constant Xgg.
7.一般的編寫習慣是如果方法含有參數,那麼就使用圓括號將參數括起來,否則不需要圓括號.
8.當定義一個方法後,可以用undef_method取消一個方法的定義,貌似運用的不多。
class Test
def test
p "test2"
end
end
obj1 = Test.new
obj1.test
#會輸出"test2"
class Test
undef_method(:test)
end
obj1.test
#會提示方法沒有被定義
9.繼承,用<表示 ,ruby語言只支持單繼承,每一個類都只能有一個直接父類。
class Student < Person
def initialize(name, gender, age, school)
@name = name
@gender = gender
@age = age
@school = school
end
end
10.特殊方法是指某實例所特有的方法。
class << obj
……
end
obj是一個具體的對象實例,class << 代表它的特殊類
11.interator迭代器。。
6.times{|i| p i} 求出0-6之間的數
2.times {
p defined?(num)
num =10
p num
}
#會輸出 nil 10 nil 10
["ab","ced"].each {|entity| p entity}
12. yield
def callBlock
yield
yield
end
callBlock {p "In the block"}
#輸出: In the block In the block
14.ruby中求小數 如:format("%0.2f",11.329)-->11.33
ruby按精度保留小數
有一個round函數,用起來非常方便:
>> 2.3465.round "\n 換行"
=> 2
>> 2.3465.round(2)
=> 2.35
>> 2.3465.round(3)
=> 2.347
15.對象的initialize
class Song
def initialize(name, artist, duration)
@name =name
@artist = artist
@duration =duration
end
end
song = Song.new("Bicy","Fleck",260)
song.inspect(inspect方法返回一個文字表徵的字符串)
16.可以直接引入Math對象 include Math -16.abs
17.單行註釋用#,多行註釋用 =begin **** =end,也可以用多個#
18.文件讀取文件讀取文件讀取文件讀取
filename="C:\\Users\\Administrator\\Desktop\\ruby\\one.txt"
file=open(filename)
text=file.read
print text
file.close
filename=ARGV[0]
file=open(filename)
while text=file.gets
print text
end
file.clos
19.類方法引用
類.方法 類::方法
20.‘ ’與""的區別
moji="字符串"
str="這也是#{moji}"
p str
str1='這也是#{moji}'
p str1
21.設置字符編碼
before_filter :set_charset
def set_charset
@headers["Content-Type"] = "text/html; charset=utf-8"
end