Ruby學習筆記1,第一章和第二章
第一章
交互式實驗環境啟動命令 irb
文件加載的命令 load "filename.rb"
運行一個文件 ruby filename.rb, ruby -w 激活warning
查看幫助文檔命令 ri class.method
第二章
注釋符號 #
Bool值
false和nil為假,其他都為真
實例化
object = Clazz.new(arguments),new是繼承自Object的一個static方法
方法調用
"str".length => 3 不一定要括號()
"str".index("r") => 2 index從零開始計數
-1942.abs => 1942 整數也是對象,Ruby沒有的primitive數據,都是對象
函數定義
def add(x, y)
return x + y
end
函數的最后一個表達式即是返回值,所以return x + y也可以寫成x + y.
變量名
全局 $global
實例(field) @field
類(static) @@class_field
局部 小寫字符和下劃線開頭
字符串
"Good night, #{name}" <=> "Good night, %s", name
'Good night, #$name' 如果name是全局變量
"Good night, #@name" 如果name是實例變量
正則表達式
Pattern以/ /頭尾, match操作符 =~
\s 單個空格字符
\d 單個數字
\w 單詞中的字符
. 單個字符
(|) 兩則取一
"Java python c#" =~ /python/ 返回5
"Java python c#".sub(/c#/, 'ruby') 返回Java python ruby
"c# Java c#".gsub(/c#/, 'Java') 返回 Java Java Java
列表
a = [1, "cat", 3.14]
a[0] = nil
a = %w{ ant bee cat } <=> a = [ "ant", "bee", "cat" ]
Hash
numbers = { "one" => 1, "two" => 2, "three" => 3}
默認的不存在鍵返回值是nil,可以改變
hist = Hash.new(0)
hist["key1"] => 0
hist["key1"] = hist["key1"] + 1
hist["key1"] => 1
輸出
puts 自動加上換行符
print 沒有換行符
printf("Number: %5.2f,\nString: %s\n", 1.23, "hello")
輸入
gets 輸入一行,帶換行符
控制結構
if <condition> while <condition>
<statements> <statements>
elsif <condition> end
<statements>
else
<statements>
end
puts "Danger, Will Robinson" if radiation > 3000
<=>
if radiation > 3000
puts "Danger, Will Robinson"
end
square = 2
square = square * square while square < 1000 # 照樣是先判斷條件,為true,運行循環
Block是一段匿名的代碼或者說是一個匿名的函數,可以用yield調用
def call_block
yield("hello", 99) # 調用block
end
call_block { |str, num| puts str + num } # 定義block
需要Block的函數,類似于函數式語言中的High Order函數,他的一個參數是函數。
animals = %w{ ant bee cat }
animals.each { |animal| print animal, " " }
5.times { print '+' }
3.upto(6) { |i| print i }
('a'..'e').each { |c| print c }
并行賦值
x, y = y, x # 交換了x和y的值
例子: 計算Fibonacci數









判斷一變量名是否定義
defined?(name)
轉載請保留http://m.tkk7.com/xilaile/archive/2007/05/06/115497.html