条件判断
if 条件 then 条件成立时的要执行的处理
end
#then可以省略
循环
-
while语句
while 循环条件 do
希望循环的处理
end
-
times方法
循环次数.times do
希望循环的处理
end
P方法
- 使用print或者puts时无法很好区分字符串“1”和数值1,使用p方法可以很好区分
puts "100" #=> 100 puts 100 #=> 100 p "100" #=> "100" p 100 #=> 100
- 使用P方法使,换行符\n,制表符\t等特殊字符不会转义
执行结果为puts "Hello, \n\tRuby." p "Hello, \n\tRuby."
> ruby puts_and_p.rb Hello, Ruby. "Hello, \n\tRuby."
数组
- 数组的元素可以是不同种对象
mixed = [1, " 歌 ", 2, " 风 ", 3]
- 数组的大小
array.size
- 数组的循环
数组.each do |变量|
希望循环的操作
end
>>irb
>>names=["张三","李四","王五"]
=>["张三","李四","王五"]
>>names.each do |n|
?>puts n
>>end
张三
李四
王五
散列
符号与字符串对象相似,可理解为轻量级的字符串
- 创建符号,在字符串开头加:
sym = :foo sym2 = :"foo"
- to_s方法和to_sym方法
>irb >>sym = :foo =>:foo >>sym.to_s #将符号转换为字符串 =>"foo" >>"foo".to_sym#将字符串转换为符号 =>:foo >>:foo.to_s #将符号转换为字符串 =>"foo"
- 创建散列
或者address = {:name => "高桥", :pinyin => "gaoqiao", :postal => "1234567"}
散列由键值和对象组成。address = {name: "高桥", pinyin: "gaoqiao", postal: "1234567"}
- 散列的使用
> irb --simple-prompt >> address = {name: "高桥", pinyin: "gaoqiao"} => {:name=>"高桥", :pinyin=>"gaoqiao"} >> address[:name] #散列名[键值] => "高桥" >> address[:pinyin] => "gaoqiao" >> address[:tel] = "000-1234-5678" #散列名[键值]=希望保存的对象 => "000-1234-5678" >> address => {:name=>"高桥", :pinyin=>"gaoqiao", :tel=>"000-1234-5678"}
- 散列的循环
>> address.each do |key, value| ?> puts "#{key}: #{value}" >> end name: 高桥 pinyin: gaoqiao => {:name=>"高桥", :pinyin=>"gaoqiao"}
正则表达式
- 匹配正则表达式与字符串的方法是: / 模式 / =~ 希望匹配的字符串,若成功返回匹配成功的位置,字符的位置从0开始;若匹配失败,返回nil。
> irb --simple-prompt >> /Ruby/ =~ "Ruby" => 0 >> /Ruby/ =~ "Diamond" => nil
- 字符串中包括空格不占字符位置。
> irb --simple-prompt >> /Ruby/ =~ "Yet Another Ruby Hacker," => 12 >> /Yet Another Ruby Hacker,/ =~ "Ruby" => nil
- 正则表达式右边的 / 后面加上 i 表示不区分大小写匹配。
>> /Ruby/ =~ "RUBY" => nil >> /Ruby/i =~ "ruby" => 0