第三章先绕过去,先进行第四章,Ruby的语法。
这章对于Ruby只是一个大概的说明。
Ruby 中的类可以被打开进行修改,允许像我们自己这样的普通人添加一些方法
class String
>> # 如果字符串和自己反转后相等则返回 true
>> def palindrome?
>> self == self.reverse
>> end
>> end
=> nil
>> "deified".palindrome?
=> true
map 方法返回的是在数组或 Range 的每个元素上执行块中代码后的结果
>> (1..5).map { |i| i**2 } # ** 表示幂
=> [1, 4, 9, 16, 25]
>> %w[a b c] # 再说一下,%w 可以创建元素为字符串的数组
=> ["a", "b", "c"]
>> %w[a b c].map { |char| char.upcase }
=> ["A", "B", "C"]
>> %w[A B C].map { |char| char.downcase }
=> ["a", "b", "c"]
inspect 方法,返回被调用对象的字符串字面量表现形式
>> puts (1..5).to_a # 把数组作为字符串输出
1
2
3
4
5
>> puts (1..5).to_a.inspect # 输出一个数组字面量形式
[1, 2, 3, 4, 5]
>> puts :name, :name.inspect
name
:name
>> puts "It worked!", "It worked!".inspect
It worked!
"It worked!"
Hash的三种建立方法:
第一种:
>> user = { "first_name" => "Michael", "last_name" => "Hartl" }
=> {"last_name"=>"Hartl", "first_name"=>"Michael"}
第二种:
>> user = { :name => "Michael Hartl", :email => "michael@example.com" }
=> {:name=>"Michael Hartl", :email=>"michael@example.com"}
>> user[:name] # 获取 :name 对应的值
=> "Michael Hartl"
>> user[:password] # 获取一个未定义的键对应的值
=> nil
第三种:
>> h1 = { :name => "Michael Hartl", :email => "michael@example.com" }
=> {:name=>"Michael Hartl", :email=>"michael@example.com"}
>> h2 = { name: "Michael Hartl", email: "michael@example.com" }
=> {:name=>"Michael Hartl", :email=>"michael@example.com"}
>> h1 == h2
=> true
Symbol 看起来像字符串,只不过没有包含在一对引号中,而是在前面加一个冒号