Ruby拾遗补缺

2016-11-28  本文已影响0人  chen_lei

写Ruby有一年多了,一直是拿着就写,对着别人的代码仿,不懂的就一个个去查,只求完成任务就好,也导致了我的视野慢慢变窄,没有系统性地了解它,就很有可能错过它很多精彩美妙的地方。
本文的知识点来自于日本的高桥征义,后藤裕藏写的《Ruby基础教程(第4版)》

语法

符号

2.3.3 :074 > :name
 => :name 
2.3.3 :075 > :name.to_s
 => "name" 
2.3.3 :076 > "name".to_sym
 => :name 
2.3.3 :073 >  address = {name: "高桥", pinyin: "gaoqiao", postal: "1234567"}
 => {:name=>"高桥", :pinyin=>"gaoqiao", :postal=>"1234567"} 

这样和json有格式点像,不过json的key是需要用引号包起来的
{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}

变量

      a,b,c = 1,2

      2.3.3 :003 > [a,b,c]
      => [1, 2, nil] 

有什么实际用途呢?交换变量:

2.3.3 :010 > a,b = 1,2
 => [1, 2] 
2.3.3 :011 > a,b = b,a
 => [2, 1] 
2.3.3 :012 > [a,b]
 => [2, 1] 

判断

2.3.3 :052 > array = ["aa",10]
 => ["aa", 10] 
2.3.3 :053 > array.each do |item|
2.3.3 :054 >       case item
2.3.3 :055?>       when String
2.3.3 :056?>       puts "this is String"
2.3.3 :057?>       when Numeric
2.3.3 :058?>       puts "this is Numeric"
2.3.3 :059?>       else
2.3.3 :060 >         puts "unknow"
2.3.3 :061?>       end
2.3.3 :062?>   end
this is String
this is Numeric
 => ["aa", 10] 

when 里面判断是用的=== 也就是说不仅可以判断==的情况,还可以判断右边的对象是否属于左边的类,也可以用正则表达式的方式进行匹配。

2.3.3 :009 > for i in 2..4 do
2.3.3 :010 >       puts i
2.3.3 :011?>   end
2
3
4

方法

2.3.3 :019 > def test (*args)
2.3.3 :020?>     pp args
2.3.3 :021?>   end
 => :test 
2.3.3 :022 > test(1,2,3,4)
[1, 2, 3, 4]

编码

这是一个我一直以来没有搞清楚的问题。

上一篇 下一篇

猜你喜欢

热点阅读