1.irb参数配置

~/.irbrc

IRB.conf[:PROMPT_MODE] = :SIMPLE  #简化 irb 提示符,以及禁用一些烦人的自动缩进行为
IRB.conf[:AUTO_INDENT_MODE] = false

2.注释:

#单行

=begin

......多行

=end

3.字符串

字符串连接

>> "jk" + "jk"
=> "jkjk"

字符串插值

>> one = "foo"
=> "foo"
>> "#{one} is one"
=> "foo is one"

字符串打印

>> puts "jk"  #打印后自带一个换行符
jk
=> nil
>> p "jk" #打印出和原来一样的
"jk"
=> "jk"
>> print "jk"  #打印不换行
jk=> nil

单双引号字符串

>> 'jk\n#{one}'    #不进行转移字符和插值操作
=> "jk\\n\#{one}"
>> "jk\n#{one}"    #输出转义后的字符和插值操作
=> "jk\nfoo"

对象和消息传送

>> "jk".length
=> 2
>> "".empty?
=> true
>> "jk".nil?
=> false
>> "jk".include?("j")
=> true

判断的时候可以配合 &&(和) || (或) !(非)来操作

>> one = "foo" 
=> "foo"
>> two = ""
=> ""
>> if one.empty? && two.empty?
>> print "both empty"
>> elsif one.empty? || two.empty?
>> print "empty exist"
>> elsif !x.empty?
>> print "x is not empty"
>> end
empty exist=> nil

to_s可以把任何对象转换成字符串

>> nil.to_s.empty?
=> true

unless判断

>> two = "dasd"
=> "dasd"
>> print "ss" unless two.empty?
ss=> nil

使用!!可以两次取反,把对象转换为布尔类型

>> !!nil   #nil对象为布尔假
=> false
>> !!0    #其他都为真
=> true

数值和范围

split方法,将字符串分割成想要的字符数组

>> "dasjkd das d   dasd".split   #默认去掉空格
=> ["dasjkd", "das", "d", "dasd"]
>> "fdjaskl,jfdskl,jfklasd".split(",") #设定用,分割
=> ["fdjaskl", "jfdskl", "jfklasd"]

数组的索引

>> a=[12,34,45,67,89,8]
=> [12, 34, 45, 67, 89, 8]
>> a[0]
=> 12
>> a[2]
=> 45
>> a[-4]    #索引可是负数
=> 45
>> a.fifth    #可以这样查找,但这是rails添加的效果
=> 89
>> a.first
=> 12
>> a.last
=> 8 >> a=[12,34,45,67,89,08]     #注意数字之前不能有0,提示错误无效的十进制
SyntaxError: (irb):40: Invalid octal digit
a=[12,34,45,67,89,08]
                    ^

数组的一系列方法

>> a.length
=> 6
>> a.include?(45)
=> true
>> a.sort            #按有小到大顺序排列(不改变原有数组)
=> [8, 12, 34, 45, 67, 89]  
>> a.reverse          #顺序反过来
=> [8, 89, 67, 45, 34, 12]
>> a.shuffle          #随意打乱顺序
=> [45, 12, 8, 34, 67, 89]
>> a.sort!           #按有小到大顺序排列 (改变原有数组)
=> [8, 12, 34, 45, 67, 89]
>> a.push(4)      #添加元素 (改变原有数组)
=> [8, 12, 34, 45, 67, 89, 4]  
>> a << 3             #添加元素(改变原有数组)
=> [8, 12, 34, 45, 67, 89, 4, 3]  
>> a << "tu" << "re"      #串联添加,并且数组中可以添加其它类型的元素
=> [8, 12, 34, 45, 67, 89, 4, 3, "tu", "re"] 
>> a.join          #将字符串合并
=> "8123445678943ture"
>> a.join(",")        #添加连接符
=> "8,12,34,45,67,89,4,3,tu,re"

范围操作

 >> (0...9).to_a      #去掉最后的一个值,转化为数组
=> [0, 1, 2, 3, 4, 5, 6, 7, 8]
>> (0..9).to_a      #保留所有至
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>> a=(0..9).to_a        
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>> a[4..(a.length)]    #使用length方法
=> [4, 5, 6, 7, 8, 9]
>> a[4..-2]      #小技巧
=> [4, 5, 6, 7, 8]

块

>> (1..9).each do |f|
?> print f*f
>> end
149162536496481
>> (1..9).map {|i| i*i} #将每个元素变换并返回map
=> [1, 4, 9, 16, 25, 36, 49, 64, 81]
>> (1..9).reduce {|i| i*i} #将整个数组变换为一个值返回
=> 1
>> %w{das das das}    #%w将元素变换为字符串返回
=> ["das", "das", "das"]

哈希和符号

 >> user = {}      #初始化哈希
=> {}
>> user["one"] = "yz00"  
=> "yz00"
>> user["two"] = "yz01"
=> "yz01"
>> user["one"]    #获取哈希
=> "yz00"
>> user
=> {"one"=>"yz00", "two"=>"yz01"}
>> user = {"one" => "yz00","two" => "yz01"}     #也可以这样赋值
=> {"one"=>"yz00", "two"=>"yz01"}      #注意在逗号后面有一个空格,约定俗成的

可以把符号看成没有约束的字符串,所以可以写成下面的形式

>> user = {:one => "yz00", :two => "yz01"}    #不用初始化
=> {:one=>"yz00", :two=>"yz01"}

由于符号当作键用的多,1.9后这样定义

 >> user = {one: "yz00", two: "yz01"}
=> {:one=>"yz00", :two=>"yz01"}

嵌套哈希

>> users[:user] = user
=> {:one=>"yz00", :two=>"yz01"}
>> users
=> {:user=>{:one=>"yz00", :two=>"yz01"}}
>> users[:user][:one]
=> "yz00"
>> print (1..5).to_a
[1, 2, 3, 4, 5]=> nil
>> puts (1..5).to_a
1
2
3
4
5
=> nil
>> puts (1..5).to_a.inspect    #inspect方法输出数组的字面形式,输出对象时相当于P方法
[1, 2, 3, 4, 5]
=> nil
>> p (1..5).to_a          
[1, 2, 3, 4, 5]
=> [1, 2, 3, 4, 5]

ruby日记1的更多相关文章

  1. 小白日记19:kali渗透测试之选择和修改EXP

    EXP 目的:学会选择和修改网上公开的漏洞利用代码[EXP(python\perl\ruby\c\c++....)] 方法: 1.Exploit-db[kali官方维护的漏洞利用代码库] 2.Secu ...

  2. 小白日记15:kali渗透测试之弱点扫描-漏扫三招、漏洞管理、CVE、CVSS、NVD

    发现漏洞 弱点发现方法: 1.基于端口服务扫描结果版本信息,比对其是否为最新版本,若不是则去其 官网查看其补丁列表,然后去逐个尝试,但是此法弊端很大,因为各种端口应用比较多,造成耗时大. 2.搜索已公 ...

  3. 微信小程序开发日记——高仿知乎日报(下)

    本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP 要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该 ...

  4. 微信小程序开发日记——高仿知乎日报(中)

    本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该教 ...

  5. 微信小程序开发日记——高仿知乎日报(上)

    本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP 要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该 ...

  6. Linux学习日记-使用EF6 Code First(四)

    一.在linux上使用EF 开发环境 VS2013+mono 3.10.0 +EF 6.1.0 先检测一下EF是不是6的 如果不是  请参阅 Linux学习日记-EF6的安装升级(三) 由于我的数据库 ...

  7. 安装cocoapods遇到两大坑-Ruby版本升级和Podfile的配置

    今天安装cocoapods #移除原有ruby源 $ gem sources --remove https://rubygems.org/ #使用可用的淘宝网 $ gem sources -a htt ...

  8. Unable to download data from http://ruby.taobao.org/ & don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

    安装cocoapods,记录两个问题! 1.镜像已经替换成了 http://ruby.taobao.org/, 还是不能不能安装cocoapods, 报错:Unable to download dat ...

  9. 安装了ruby后怎么安装sass

    在命令行中输入 ruby -v 查看版本号 先移除默认的https://rubygems.org源,命令为gem sources --remove https://rubygems.org/,按回车 ...

随机推荐

  1. frame busting

    [frame busting] 参考:http://book.51cto.com/art/201204/330076.htm

  2. PowerDesginer 生成的Oracle 11g 组合触发器代码编译错误(29): PLS-00103

    问题描述: 采用PowerDesigner15针对Oracle 11g 创建物理数据模型,想实现一个字段的自增,采用如下步骤: 1.创建序列,命名为Sequence_1; 2.在自增字段编辑窗口中,选 ...

  3. LDAP与Samba

    默认的Samba服务器支持本地系统用户(smbpasswd添加后)访问Samba资源,不支持OpenLDAP服务器账号访问Samba共享资源 目的:配置完后,OpenLDAP每新增一个用户,就自动支持 ...

  4. [转] Android 4.4中播放HTML5视频<video>的Bug

    近期Nexus 4手机自动升级到Android4.4,本来挺好的一件事儿,结果发现自己的应用中出现一个Bug,应用中使用了Webview播放HTML5视频,代码如下: <video width= ...

  5. iOS10 的适配问题,你遇到了吗?导航栏标题和返回按钮神奇的消失了

    苹果系统升级后好多应用都发了新版本来适配,今天就来分享一下我的适配历程. 首先是出现的问题: 1.push一个控制器,返回按钮和标题神奇的消失了,打开三维视图(比较坑的是有的版本老到打不开三维视图 ) ...

  6. alphaRGB 转 RGB、16位

    struct xColor { BYTE b, g, r, a; }; struct RGBColor { BYTE b, g, r; }; //void operator <<(RGBC ...

  7. 05-Java中的String类

    程序设计思路: 首先目标是使输入的字符串加上某个数变成另一个字符串,从而相当于对字符串进行加密. 第一步输入一个字符串String类型: 第二步把这个字符串转变成字符数组: 第三步让这个数组的每一个字 ...

  8. TFS 服务端默认端口更改

    由于服务商限制8080,为了外网能访问.如果可以做映射还好.如果不能那就修改默认端口 以下为网上资源 安装完Team Foundation Server 2005 后,默认的端口是8080.如果想要事 ...

  9. sql一对多的两个表的update

    scie_apprecord仪器表   和   scie_apporder仪器预约时间表 ,一个仪器可以有多条预约时间. 仪器表: 预约时间表: 需求: 由于一个仪器有好多条预约记录,将预约时间表的最 ...

  10. Linux系统编程温故知新系列 --- 01

    1.大端法与小端法 大端法:按照从最高有效字节到最低有效字节的顺序存储,称为大端法 小端法:按照从最低有效字节到最高有效字节的顺序存储,称为小端法 网际协议使用大端字节序来传送TCP分节中的多字节整数 ...