- 整数类型:
3,222
- 小数:
3.14
- 字符串:
hello,world
- 布尔类型:
true(TrueClass),false(FalseClass)
- 数组:
[1,2],["hello","hello world"]
- Hash(字典):
{"name"=>"luo","age"=>24},{:name=>"daoyi",:age=>24}
- Symbol(符号):
:a,:hello,:"hello world"
- Range:
1..10,1...10
(三个点不包括10本身) - 正则:
/hello/i
String 字符串
a = "hello" #=> hello b = "world" #=> world a.class #=> String a + " " + b #=> hello world "#{a} #{b}" #=> hello world
string method
"hello world".length #=>11 "hello world".capitalize #=> Hello world "hello world".gsub("world","gril").upcase #=> HELLO GIRL
变量赋值
a = "hello" # => hello a.object_id # => 70353313681980 a.replace("hello2") # => "hello2" a.object_id # => 70353313681980 a = "hello" a.object_id # => 70353313549380
当a 使用replace时候仍然是原本的引用地址,所以Object_id不变
但是当a重新赋值为hello 的时候,a的引用地址发生了变化 object_id就改变了
以!结尾的方法
a = "hello" # => hello a.capitalize # => Hello a # => hello a.capitalize! #=> Hello a # => Hello
- !结尾的方法会改变变量资深
- 这只是个约束
- 在Rails中!的方法也被用来表示该方法会抛出异常
以?结尾的方法
a = "hello" # => hello a.is_a?(String) #=> true
- ?的方法会返回true|false
- 这只是一个约束
nil
什么是nil
a = nil # => nil a.nil? # => true
在ruby中nil和false都是"不成立"的意思,或者"否"的意思 其他一切都为true
双引号和单引号
a = "hello" # => hello b = 'hello' # => hello a == b # => true c = "world" # => world a = "hello #{c}" # => hello world a = 'hello #{c}' # => hello /#{c}
双引号中的变量会被解释,单引号不会
反引号,直接运行shell命令
Array
a = [1,2,"hello"] # => [1,2,"hello"] a.length # =>3
数组中可以放置任意类型
array常用方法
a = [1,2,"hello"] a.length # =>3 a.size # =>3 a.first # =>1 a.last # =>hello b = ["world"] # => ["world"] c = a + b # => [1,2"hello","world"] b *3 # => ["world","world","world"] c - a # =>["world"]
这些方法并不会改变数组本身
a = [] # => [] a.push(1) # => [1] a.push(2) # => [1,2] a.unshift(3) # => [3,1,2] a.pop # => 2 a.shift # => 3 a #=> 1
所有这些方法都会改变数组本身
Array 奇技淫巧
a = [] # =>[] a << 3 # =>[3] a.concat([4,5]) # => [3,4,5] a.index(4) #=> 1 a[0] = 1 # => 1 a.max # => 5
ruby中的方法
a = 1 # => 1 a + 2 # => 3
在这里+ 只是一个方法,2是传递给方法的参数
可以解释为 a 拥有 +
这样一个方法 2收传递给+方法的参数
Hash
a = {"name" => "luo","age"=>24,"hobbies" => ["coding","video game","music"]} a["name"] # => "luo"
hash是无序的,数组是有序的
Hash 常用方法
a = {"name" => "luo","age"=>24,"hobbies" => ["coding","video game","music"]} a.keys # => ["name", "age", "hobbies"] a.values # => ["luo", 24, ["coding", "video game", "music"]] a.delete("hobbies") # => ["coding", "video game", "music"] a["cellphone"] = "16666666666" # => "16666666666"
Hash的其他定义方式
a ={name:"luo",age:24,hobbies:["coding","video game","music"]} # => {:name=>"luo", :age=>24, :hobbies=>["coding", "video game", "music"]}
Json的定义方式,顺应web前端的发展趋势
Symbol
a = :hello # => :hello b = "#{a} world" # => "hello world" c = :"hello world" # => :"hello world" c.object_id # => 1160948 c = :"hello world" # => :"hello world" c.object_id # => 1160948
Symbol是String的补充,可以看做为字符串来使用,但是Symbol和String在本质上还是不同的,在 Ruby中Symbol经常被用来作为hash的key和一些变化不频繁的字符串来使用
Symbol和hash
a ={:name => "luo",:age=>24,:hobbies =>["coding","video game","music"]} a[:name] # => "luo"
Range
a = 1..10 # => 1..10 a.to_a.size # => 10 b = 1...10 # => 1...10 b.to_a.size # => 9 c = :a..:z # => :a..:z d = a.to_a + c.to_a # => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, :a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k, :l, :m, :n, :o, :p, :q, :r, :s, :t, :u, :v, :w, :x, :y, :z]
Regular Expression 正则类型
a =/hello/ # => /hello/ "hello world" =~ a # => 0 email_re = //A[/w+/-.]+@[a-z/d/-.]+/.[a-z]+/z/i # => //A[/w+/-.]+@[a-z/d/-.]+/.[a-z]+/z/i email_re.match("[email protected]") # => #<MatchData "[email protected]">
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论