Ruby基础笔记2:各种基本对象

Ruby在OO(面向对象,object oriented)上很彻底。在学Python时你会发现object.size()和len(object)两种表示方法,但是在Ruby中并没有len()这样的所谓的built-in function,方法的调用多类似于前者。
Ruby中才是真正的“万物及对象”。


你好,我是对象

赋值格式

变量名 = 对象

特殊类型

nil :不存在

简单的方法:类型转换

object.to_$

$是类型缩写,比如

puts 2.to_s

就可以把2转换成字符串打印(虽然结果差不多)。

基本对象类型

1.数值

Ruby中数值也是对象,分为Fixnum类(整数)和Float类(浮点数)。
最神奇的也是最经典的一个实例再展示一遍

#输入
3.times { puts "haha" }
#输出
haha
haha
haha

简单的运算

#输入
a = 1 + 1
b = 2 / 3
c = 2 ** 2
d = 5 - 3.14
puts "Result : #{a},#{b},#{c},#{d}"
#输出
#最后的输出和浮点数在Ruby底层的运算有关
Result : 2,0,4,1.8599999999999999

可以使用..来表示一个长度范围内的数字的集合,这是Range类型的对象,在此不再多序。

#输入
puts 1..5
for i in 1..5
    puts "haha"
end
#输出
1..5
haha
haha
haha
haha
haha

数值对象更多信息可以查阅文档。

2.字符串

Ruby中字符串可以使用单引号或者双引号,但是存在差异。

#输入
print('Hello, \nRuby\n!\n')
puts "-----"
print("Hello, \nRuby\n!\n")
print('Hello, \\ \'Ruby\'.')
#输出
Hello, \nRuby\n!\n-----
Hello, 
Ruby
!
Hello, \ 'Ruby'.

单引号里换行符等特殊字符不经转义,但是要是想打印出单引号和斜杠还是要加斜杠。

3.符号

符号貌似和字符串很像,符号是由:和字符串紧挨着构成的。

#输入
a = :b
puts a
p a
#输入
b
:b

有了字符串为什么还有符号这种类型?
下面的这两个博客中说的比较详细。感谢besfanwei的精彩讲述。

后面的笔记中会提到部分符号的用法。

4.数组

数组是按序保存对象的对象,是基本的容器。Ruby中的数组可以保存不同类型的对象。

#输入
info = ["name",1,:haha]
print info
#输出
["name", 1, :haha]

也可以声明一个空数组

names = []

Ruby 中数组下标/序从0开始,可以通过赋值改变数组的内容

#输入
info = ["name",1,:haha]
puts info[0]
puts info[1]
puts info[2]
puts info[3]
print info
puts " "
info[1] = 2
puts info[1]
info[5] = "aloha"
print info

可以看出下标1处值已更改。
有意思的是给下标是5处赋值时,本来没值的3,4处会生成nil值填补。

#输出
name
1
haha 
        # ->无值,打印nil值
["name", 1, :haha] 
2
["name", 2, :haha, nil, nil, "aloha"]

可以通过.size方法得到数组长度。

>> info.size
=> 6

可以使用块(block)遍历数组,也可以使用 for等循环结构遍历。

#输入
info.each do |n|
    print n,"-"
end

.each方法是一个带块方法,得到了数组的每一个值并且可以使用块来操作。块中的变量n为块变量,每一个值都依次赋给了n。块在之后的笔记中会提到。
可以看出,不存在的值就没有打印

#输出
name-2-haha---aloha-

5.散列
散列类似于Java中的Map,Python中的字典。
散列里面储存着各种键值对。符号字符串数值都可以称为键/值,但是符号为键的情况较为一般。

#声明一个空的散列,非必需
address = {}
#让address有具体内容
address = { :country => "China","province" => :AH ,1 => 1111 }

取值时一定要在中括号中正确表明键的类型

#以下为错误示例 ,均会报错
address[country]
address[province]
address[:1]
#以下也为错误示例,但不报错,返回nil
address["1"]
address[:province]
#为何上面出现了两种不同结果之后再作说明。
#
#正确的取值方式
puts address[:country]
puts address["province"]
puts address[1]

散列也可这样声明,仅限键为符号类型

age = {name: "Sato",year: 15}

散列和数组类似,都是动态的,可以通过以下方式加入新键值对。
假如已存在,会进行替换
age["haha"] = 3
散列也有.each方法,与数组类似,块变量含有两个,也就是键&值

#输入
address.each do |key,value|
    puts "#{key}-#{value}"
end
#输出
country-China
province-AH
1-1111

5.正则表达式

处理正则表达式是Ruby的一大优势,但是Ruby却在数据业没有崛起比较可惜。

/模式/ =~ 希望匹配的字符串 # =~两者紧密相连

上式返回一个具体的数值,代表匹配的位置。

#输入
a = /Ruby/i
puts (/Ruby/ =~ "Ruby")
puts (/Ruby/ =~ "ruby")
puts (a =~ "ruby")
puts (/Ruby/ =~ "This is my Ruby")

而且加上i不区分大小写

#输出
0
   # -> nil
0
11

参考及引用资料

本人不会将以下资料用于商业用途并对其于自己的帮助表示由衷的感谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352