初识Ruby

作者: myserendipit | 来源:发表于2016-03-12 17:30 被阅读280次

    Ruby

    • MRI : Ruby官方解释器

    安装

    Linux

        sudo apt-get install ruby
    

    基本语法

    • irb :进入Ruby命令行环境
    • puts和print的区别是,puts会自动在结尾加上换行符
    • 一切皆为对象,例如字符串、数字都是对象,有自带很多的方法,比如:
    •   "Hello Ruby".length
        "Hello Ruby".reverse
      
    • 嵌套调用: (字符串先翻转,再大写)
    •   "HelloWorld".reverse.upcase
      

    Ruby变量

    • 本地变量 (Local Variable) name = "Hello"
    • 实例变量 (Instance Variable) @age = 29
    • 全局变量 (Global Variable) $app_path = "/usr/local/"
    • 常量 (Constant) VERSION = "v1.0"

    Ruby Data Types

    • String :

        string_name = "Hello Ruby"
      
    • Number :

        num_age = 23
      
    • Array :

        array_sore = [12,52,89,45]
      
    • Boolean :

        boolean_is_pass = true
      
    • Hashes :

        hash_user = {:name => "nick", :age => 23}
        //查找
        => hash_user[:name]
        => nick
      
    • Symbols(符号) :

            //保存的也是字符串,但通常是不变的字符串,比如hash中的key,一般value变但key不变,如上的:name
        :name
      

    Ruby每个对象都有一个唯一的ID,并且提供.object_id方法查看

    Ruby Object-Orirnted

    • 查看变量对象类型:

       变量名.class
       name = "Heelo World"
       name.class
       =>String
      
    • 调用对象的方法:

        变量名.方法名
        name.length
        name.reverse.upcase
      

    Ruby Varivable Method

    • 有些方法返回修改的值,有些方法直接修改变量

        exam_score = [32,65,51,4,89]
        //排序方法,没有"!"不会修改原来数组的顺序
        exam_score.sort
        //一般来说,Ruby中方法名称以"!"结尾的,都是直接修改原始变量,要谨慎使用
        exam_score.sort!
      

    变量可嵌入字符串中
    在字符串中,可通过#{变量名}应用变量的内容,
    只能使用在双引号下

        name = "World"
        puts "Hello #{name} !"
    

    Ruby 表达式 - 比较

    • = 赋值
    • == 比较是否一样,并且对字符串的大小写敏感
    • (> , < ) 大于小于
    • <=> 船型操作符 返回-1或0或1

    表达式组合

    可以使用&&或||进行变大时组合(逻辑运算)

    还提供更自然的写法:

    • && 逻辑与 = and
    • || 逻辑或 = or
    • ! 逻辑非 = not

    Ruby - 条件判断

    在Ruby中,除了false和nil外,都被认为是true

    即使是返回0,也是为true

    if 条件判断语句
       ...
    end
    
    
    if 条件判断语句
       ...
    else
        ......
    end
    
    
    if 条件判断语句 
       ...
    elsif 条件判断语句
        ......
    else
        ...
    end
    
    
    unless 条件判断语句,条件为假时,执行
        ...
    end
    
    • Ruby Case
    day = "Monday"
            case day
            when "Monday"
                puts "Fighting"
            when "Friday"
                puts "Oh Yeah!"
            end 
    

    还可以这样表示:

    score = 99
            case score
            when 1..59 //代表一个范围
                puts "Try Again"
            when 60..79
                puts "pass"
            when 80..99
                puts "Good Job!"
            end
    

    Ruby 无尽循环

    按Ctrl + c 强制打断

    loop do
        puts "I love Ruby"
    end
    

    条件循环

    count = 0
    loop do
        puts "I love Ruby"
        
        count += 1
        if count > 10 
            break;
        end
    end
    
    count = 0
    while count < 10 //判定条件为真,until为假
        puts "I love Ruby"
        count += 1
    end
    
    

    Ruby更多的迭代器

    //从1数到10,还可以引用这个值count
    1.upto(10) do |count|
        puts "count to #{count}"
    end
    
    //从10数到1
    10.downto(1) do |count|
        puts "down to #{count}"
    end
    
    //跳着数2个
    1.step(10,2) do |count|
        puts "step to #{count}"
    end
    

    Ruby - 方法

    • 方法定义及调用
    def 方法名
        ......
    end
    
    #方法定义,以小写开头
    def say_love
        puts "I love Ruby"
    end
    
    #方法调用
    say_love
    
    #带参数的方法定义
    def say_love(name)
        puts "I love #{name}"
    end
    
    #带参数的方法调用
    say_love("Ruby")
    
    def say_love(name,from)
        puts "I love #{name},from #{from}"
    end
    
    #调用
    say_love("Ruby","Nick")
    
    • Ruby 还可以接受可变长度的参数
    def 方法名(*arg)
        ......
    end
    

    带变长参数的方法

    def add_all(*num)
        sum = 0
        #数组的方法,把输入的参数当做数组一个一个的赋给num求和
        num.each {|x| sum += x}
        return sum
    end
    
    add_all{1,2,3,4,5}
    
    - Ruby 参数默认值
    
    def 方法名(arg1=默认值...)
        ......
    end
    

    带默认参数的方法

    def say_love(name="Ruby")
        puts "I love #{name}"
    end
    

    调用

    say_love  #输出 I love Ruby
    say_love("Nick")  #输出 I love Nick
    
    - Ruby 方法返回值
    
    每个方法都有一个返回值
    
    **没有return 指定返回对象时,自动返回最后一行代码结果**
    
    def add_all(*num)
        sum = 0
        num.each{ |x| sum += x }
        return sum
    end
    

    定义一个空方法

    def do_nothing
    end
    puts do_nothing.class 
    
    # 就算是空方法也是会有返回值的,返回nil
    # nil也是一个对象
    

    相关文章

      网友评论

        本文标题:初识Ruby

        本文链接:https://www.haomeiwen.com/subject/xupxlttx.html