zoukankan      html  css  js  c++  java
  • Ruby入门——简介&基本概述

    Ruby:

    Ruby中,一切都是对象,数值、字符串、正则表达式、输入输出、数据库的连接,甚至类本身都是对象。

    对象

    1. 保有自己的身份

    在Ruby中可以使用object_id方法来取得对象的唯一号码。而且Ruby中所有的对象都属于某个类。

    对象可以通过调用class方法来确认。

    2. 可以接收信息

    信息可以被传递给对象。对象接收了信息后,就会运行相应的方法来进行某种处理。从这个意义上说,”信息传递”也被称为“方法调用”

    3. 保有内部状态

    对象具有0个以上的内部状态。例如,字符串会将其长度作为内部状态来保存,并会在方法的执行过程中发生变化。

    str1 = "abcdef"
    str2 = "abcdef"
    #获取对象idp str1.object_id
    p str2.object_id
    #str1所属的类
    p str1.class
    #数字1所属的类
    p 1.class
    
    #内容相同,则返回true
    p str1 == str2
    #内容相同,但是不是同一个对象,返回false
    p str1.equal? (str2)
    
    #保有内部状态
    p str1.length
    
    
    #输出结果
    #15650964
    #15650952
    #String
    #Fixnum
    #true
    #false
    #6
    

    Ruby —— 是一种快速、简单、面向对象的解释型脚本语言.

    An example: fact.rb

    def fact(n)
    	if n == 0
    		1
    	else
    		n*fact(n-1)
    	end
    end
    	
    puts fact(ARGV[0].to_i)
    

    运行:ruby fact.rb 2

    #返回 120

    运行:ruby fact.rb 50 (计算器中计算时会溢出)

    #返回30414093201713378043612608166064768844377641568960512000000000000  --- 正确

    当输入命令ruby而不带参数时,它将在标准输入中读入,并在结束输入后执行

    C:\Joy\Ruby>ruby
    puts "Hello World!"
    ^D //Ctrl-D
    Hello World!
    

    Ruby字符串

    “”,’’括起来的是Ruby中的字符串

    区别:

    puts "a\nb\nc"    
    #输出
    #a
    #b
    #c
    puts 'a\nb\nc'
    #输出:a\nb\nc
    
    
    puts "abcd #{4*4} efg"
    #输出: abcd 16 efg
    puts 'abcd #{4*4} efg'
    #输出: abcd #{4*4} efg
    

    字符串操作,比C,Java等语言更灵活

    #1.连接字符串
    puts "foo" + "bar"
    #输出foobar
    
    #2.重复字符串
    puts "foo" * 2
    #输出foofoo
    
    #3.获取字符串中特定字符
    herb = "parsley"
    #从0位(第一个字符)开始,获取1个字符
    puts herb[0,1]
    #输出p
    
    #从-2位(倒数第2个字符)开始,获取2个字符
    puts herb[-2,2]
    #输出ey
    
    #输出第0位到第3位的4个字符
    puts herb[0..3]
    #输出pars
    
    #输出倒数第5位到倒数第2位的4个字符
    puts herb[-5..-2]
    #输出rsle
    

    Ruby数组
    Ruby数组中可以包含不同的对象类型(数据类型)
    例如: ary = [1, 2, "3"]

    Ruby数组可以被连接或重复
    例如: ary = [1, 2, "3"]
    ary + ["foo", "bar"]
    #ary = [1, 2, "3", "foo", "bar"]

    ary * 2
    #ary = [1, 2, "3", 1, 2, "3"]


    数组索引
    ary = [1, 2, "3", 1, 2, "3"]

    ary[0]
    #输出第一个字符--->1

    ary[0,2]
    #输出第一个字符开始的2个字符--->1, 2

    ary[0..1]
    #输出第一个字符和第二个字符--->1, 2

    ary[-2]
    #输出倒数第二个字符--->2


    ary[-2,2]
    #输出倒数第二个字符开始的2个字符--->2, "3"

    ary[-2..-1]
    #输出倒数第二个字符和倒数第一个字符--->2, "3"

    Hash
    h = {1 => 2, "2" => "4"}
    {1=>2, "2"=>"4"}

    h[1]
    2

    h["2"]
    "4"

    结构控制
    1) case

    i=8
    case i
    when 1, 2..5
     puts "1..5"
    when 6..10
     puts "6..10"
    end
    #输出6..10
    

    2) while

    i = 0
    puts "It's zero."  if i==0 
    
    puts "It's negative." if i<0 
    puts i+=1 while i<3
    
    #输出
    #It's zero.
    #1
    #2
    #3
    

    3) for
    for elt in collection
      # ... here, elt refers to an element of the collection
    end

    for num in (4..6)
    puts num
    end
    #输出
    #4
    #5
    #6
    
  • 相关阅读:
    JavaScript 实现打印操作
    linux-centos7.6设置固定IP网络方法
    VMware网络配置三种网络模式(桥接、NAT、Host-only)
    SVN 执行cleanup报错:Cleanup failed to process the following paths
    word生成目录的pdf
    win10开机后将存在多个系统选择,改为直接进入系统无需选择
    Win10删除或是不显示快速访问中最近使用文件记录
    Dell T30解决报Alert! Cover was previously removed.
    WIN10安装.net报0x800F081F解决方法
    查看SVN当前登录用户
  • 原文地址:https://www.cnblogs.com/enjoytesting/p/2550984.html
Copyright © 2011-2022 走看看