ruby小语法

  1. 直接puts输出数组 鸭子类型(duck typing)几个方法 to_i to_s to_f 自己感受下

    irb(main):015:0> a = ['100', 90]
                 => ["100", 90]
    irb(main):016:0> puts a
                      100
                      90
                 => nil
    
    irb(main):017:0> a[0].to_i
    => 100
    irb(main):018:0> a[0].to_s
    => "100"
    irb(main):019:0> a[0].to_f
    => 100.0
    
  2. 每个函数都会有返回结果,如果没有显示指定某个返回值,函数就将返回退出函数前最后处理的表达式的值。像其他所有事物一样,函数也是个对象。(数字4也是对象)

  3. 数组元素不必具有相同类型

  4. Micropost < ActiveRecord::Base
    双冒号是定义 name space 用的,或者叫 scope
    当你使用 Foo::Bar 的时候,实际你是在找一个名字叫 Foo 的 namespace ,然后让它返回它里面的 Bar 参数,这个 Bar 可以是个常量,可以是个类,可以是个方法 (后两者在 Ruby 中可视为常量)
    同理使用 FooBar::method1 的时候实际上是在要求返回 FooBar 这个 namespace 中 method1 这个「常量」的值。
    使用 FooBar.method1 的时候则是在调用这个方法,当然返回结果是一样的,这里 ::. 确实是可以互换不影响结果。但 :: 只能用来找 class method , instance method 就只能用 .

  5. empty的判断

    >> "foobar".empty?
    => false
    >>  "".empty?
    => true
    
  6. ruby方法会返回最后一个表达式的值,不管有没有return

  7. Hash 本质上就是数组,只不过它的索引不局限于使用数字。
    使用方括号[]定义hash

    >> user = {}                          # 声明一个hash user, {} 是一个空 Hash
    => {}
    >> user["first_name"] = "Michael"     # 键为 "first_name",值为 "Michael"
    => "Michael"
    >> user["last_name"] = "Hartl"        # 键为 "last_name",值为 "Hartl"
    => "Hartl"
    >> user["first_name"]                 # 获取元素的方式类似数组
    => "Michael"
    >> user                               # Hash 的字面量形式
    => {"last_name"=>"Hartl", "first_name"=>"Michael"}
    

    使用 => 分隔的键值定义hash

    >> user = { "first_name" => "Michael", "last_name" => "Hartl" }
    => {"last_name"=>"Hartl", "first_name"=>"Michael"}
    
  8. Symbol 看起来像字符串,只不过没有包含在一对引号中,而是在前面加一个冒号。例如,:name 就是一个 Symbol。你可以把 Symbol 看成没有约束的字符串(不能包括连接符-

    >> user = { :name => "Michael Hartl", :email => "[email protected]" } #一种定义方式
    => {:name=>"Michael Hartl", :email=>"[email protected]"}
    >> h2 = { name: "Michael Hartl", email: "[email protected]" }  #更简洁的定义方式
    => {:name=>"Michael Hartl", :email=>"[email protected]"}
    >> user[:name]              # 获取 :name 对应的值
    => "Michael Hartl"
    >> user[:password]          # 获取一个未定义的键对应的值
    => nil
    
  9. Ruby 中的每个类最终都是继承自 BasicObject,而其本身没有父类。

  10. example_user.rb

    class User
    attr_accessor :name, :email #属性访问器(attribute accessors)。也就是定义了“获取(getter)”和“设定(setter)”方法,用来取回和赋予 @name 和 @email 实例变量。在 Rails 中,实例变量的意义在于,它们自动的在视图中可用。实例变量总是以 @ 符号开头。
    
    def initialize(attributes = {})  #initialize,在 Ruby 中有特殊意义:当我们执行 User.new 时会调用该方法
    @name  = attributes[:name]
    @email = attributes[:email]
    end
    
    def formatted_email
    "#{@name} <#{@email}>"
    end
    end
    

你可能感兴趣的:(ruby小语法)