Ruby(1):入门
安装:
一般来说linux会自动装ruby,可以通过:
ruby -v 来查看ruby版本
直接使用ruby命令的话,是用来执行ruby文件的。如果要打开交互式ruby解释器。只需要在控制台输入:irb 即可。
irb的命令前面有一个形式如 :irb(main):001:0> 的开始的提示,其中的两个数字第一个表示第几行,第二个表示嵌套的层次。
语法特点:
Ruby的设计初衷就是以最面向人的语法习惯来的。所以Ruby代码的规范看起来比其他任何语言都宽松。具体表现如下:
1. 语句的结尾不需要使用分号结束
2. 没有任何特殊的缩进要求
3. 对于只带一个参数的函数,函数的括号可以省略
4. 一切皆对象。每种对象都有丰富的方法,且可以直接给内置的对象增加方法。
也正是由于第2点,父层与子层之间没有缩进要求,所以不同于python的是:ruby的语法块之间需要使用end关键字来表示结束。
简单的使用:
计算:
可以使用 1 + 1 、2+2之类的来计算,需要注意的是,如果直接使用 10/3 得到的将是3, 要想得到 3.3333 需要使用 10.0 /3 或者 10/3.0
循环:
最简单的循环实现代码如下:
10.times do print " hello" end #表示循环10次打印 " hello"
# 这里使用了 Fixnum对象的times方法
Loop
定义类:
class Person
attr_accessor :name, :age, :gender # 定义属性
end
DefClass
定义完类之后,就可以进行实例化了:
person = Person.new
person.name = "KiDe"
person.age = 25
person.gender = "male"
ruby当然和其他面向对象的编程语言一样也支持继承,继承的使用通过 < 来实现:
class NewPerson < Person
attr_accessor :health
end
Heritage
此时该新的类拥有前面的类的所有属性并且多了一个叫health的属性
Ruby可以很轻松的对类进行扩展(即使是内置的类):
class Person
def greeting
puts "Hello " + self.name
end
end
Extend
PS:在ruby中这不会覆盖原来person的定义,相反只是在原来person的定义之上增加了一个方法,这样Person类和其子类都可以调用该方法。当然如果子类对新增的方法进行复写,那么就形成了多态。
一切皆是对象:
可以通过 puts person.class puts 1.class 来查看所有数据类型所属的对象类型
puts 1.class #Fixnum
puts "a".class # String
Class
Kernel模块的方法:
Kernel是个特殊的类,他的方法在ruby的每个类和范围中都有效,其中前面用到的 puts 和 print方法都属于该类。
我们也可以使用 Kernel.puts 来进行输出 ,当ruby发现方法的调用方为空的时候就会去Kernel模块去找。
向方法中传入参数:
对于puts这种只有一个参数的方法,可以直接通过 puts "Hello " 将要传入的参数直接放到方法后面,但当方法有多个参数的时候,建议使用括号。
使用字符串的常见方法:
"test" + "test" # testtest
"test".capitalize # Test
"Test".downcase # test
"Test".chop # Tes (去掉最后一个字符)
"Test".hash # -98625764
"Test".next # Tesu
"Test".reverse # tseT
"Test".sum #
"Test".swapcase # tEST
"Test".upcase # TEST
String
所有方法都返回一个新的String对象,所以支持链式调用。
以非面向对象的方式使用Ruby:
可以直接在main函数中定义一个新的方法,然后直接调用。这个调用的时候是没有带任何对象的。其实该方法也属于Kernel对象。也可以通过Kernel. 调用:
def myPrint(value)
print "This is myPrint:" + value
end # 可以通过下面的方式进行调用:
myPrint("Haha")
Kernel.myPrint("Haha")
Method
通过Kernel.methods 可以得到 Kernel的所有方法,里面可以看到有 :myPrint 的签名。
Ruby(1):入门的更多相关文章
- 《Ruby语言入门教程v1.0》学习笔记-01
<Ruby语言入门教程v1.0> 编著:张开川 邮箱:kaichuan_zhang@126.com 想要学习ruby是因为公司的自动化测试使用到了ruby语言,但是公司关于ruby只给了一 ...
- Ruby FFI 入门教程
FFI是一个可以让用户使用Ruby调用C代码的gem.如果你需要执行一些系统底层调用,或者做一些高性能运算的话,FFI是一个很不错的选择. 1. 安装 执行gem install ffi即可.非常标准 ...
- 【转】教你Ruby快速入门
转自:http://developer.51cto.com/art/200703/41243.htm 介绍 这是一个短小的Ruby入门,完全读完只需20分钟.这里假设读者已经安装了Ruby,如果你没有 ...
- Ruby开发入门
开发环境搭建 首先安装Ruby SDK,我安装的版本是2.0.之后安装IDE,这里用的是Jetbrain的RubyMine 5.4.3,注意是否支持对应版本的Ruby SDK. 一段神奇的注册码... ...
- Ruby菜鸟入门指南
写这篇文章的初衷源于我的伙伴们在上手Ruby过程中,表现实在是太让人拙计了.由于项目的急功近利,需要迅速入门Ruby并上手项目.所以很多开发者在实际开发过程中,不熟悉Ruby的表达方式,也会沿用其他语 ...
- Ruby小白入门笔记之<个人记录档>
书写缘由 快两年的JAVA开发,因为来到一家新公司,产品需要用Ruby开发,故此才有了这从头开始,一入编程深似海啊...... 因为入门时是JAVA,所以理念跟规范早已形成,故此感觉突然采用Ruby编 ...
- Ruby小白入门笔记之 <Gemfile 文件>
因为初学Ruby,四处查资料无果,才来的贴出亲自试过的操作,覆盖整个个人入门笔记博客中,故所有的操作,都以最明了的方式阐述,当你创建完一个新的Rails应用后,你发现JAVA中我们可以编写maven聚 ...
- Ruby之入门(一)
前言 这门语言很少去听过,可能是没怎么用到就不会听到太多关于ruby的消息,工作需要这门语言,需要从0开始学习这门语言,慢慢学习简直...太神奇了...,原谅我见识浅薄.原来很早就已经出世了,园子中也 ...
- 《Ruby语言入门教程v1.0》学习笔记-03
10.09 第七章 7.1 模块 Ruby标准包里的 Math 模块提供了许多方法,比如:求平方根 sqrt ,使用的时候要这么写:模块名.方法名(参数).如:Math.sqrt( a*5+b ) M ...
- 《Ruby语言入门教程v1.0》学习笔记-02
9.18 第四章 一切都是对象 这个章节的例子都举得很浅显易懂,而且作者的语言= =噗,委实生动有趣啊是~~ 4.1 两种思维方式 初期的编程思想是:以“如何做”为指导来编写代码.这时期的编程语言叫 ...
随机推荐
- Visual Studio Code 基本操作 - Windows 版
1.Install the .NET SDK 2.Create app: dotnet new console -o myApp cd myApp 3.Run your app:dotnet run
- C#语言各个版本特性(二)
二.排序Product 1.按名称对产品进行排序,以特定顺序显示一个列表的最简单方式就是先将列表排序,再遍历并显示其中的项. C#1.1 使用IComparer对ArrayList进行排序 produ ...
- ES6——内置对象的扩展
字符串的扩展 //模版字符串 let flag=true; let hml=`<ul> <li> <span></span> <span>& ...
- 【OCP-12c】2019年CUUG OCP 071考试题库(75题)
75.Which statements are correct regarding indexes? (Choose all that apply.) A. A non-deferrable PRIM ...
- 【文文殿下】【HAOI2008】硬币购物
题目描述 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买si的价值的东西.请问每次有多少种付款方法. 数据规模 di,s<=1 ...
- elasticsearch-5.1.1 安装的问题
elasticsearch 5.1 安装过程中遇到了一些问题做一些记录. 问题一:警告提示 [2016-12-20T22:37:28,543][INFO ][o.e.b.BootstrapCheck ...
- PHP消息队列实现
一个经典的消息队列就是这样的,主要是入队出队操作. shell脚本日志输出 学习地址:http://www.imooc.com/article/19111
- 网站架构:PHP针对并发访问如何优化?
1.拆表:大表拆小表(垂直拆,水平拆:分表,分区partition,分片sharding),可以在应用层实现,也可以在数据库层面实现一部分:提高系统性能. 2.分库:把表放到不同的数据库,这也是分布式 ...
- Machine learning 第7周编程作业 SVM
1.Gaussian Kernel function sim = gaussianKernel(x1, x2, sigma) %RBFKERNEL returns a radial basis fun ...
- 常用的re正则
常用的正则表达式: 用户名:/^[a-z0-9_-]{3,16}$/ 密码:/^[a-z0-9_-]{6,18}$/ 十六进制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/ 电子邮 ...