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 两种思维方式 初期的编程思想是:以“如何做”为指导来编写代码.这时期的编程语言叫 ...
随机推荐
- win10 数字许可证激活被 KMS激活覆盖
打开cmd(管理员身份),依次执行以下命令: slmgr/upk slmgr/ckms slmgr/rearm 重启设备后联网登录Microsoft账号,转设置-激活-疑难解答,windows会找到与 ...
- css细节复习笔记——内边距、边框和外边距
一个元素的内边距.边框和外边距属性会影响着整个文档如何布局,更重要的是,它们会严重影响给定元素的外观. 高度和宽度 这两个属性不能应用到行内非替换元素,其高度和宽度由链接的内容确定,而不是由创作人员确 ...
- 为什么在AI领域网络安全更重要?先睹为快~
AI迎来了改变世界的新机遇,同时也迎来了新的网络安全问题,只要是联网的系统就会有漏洞爆出~ 随着大数据的应用,人工智能逐渐走入千家万户并显示出巨大的市场空间,从机器人客服.自动驾驶汽车到无人机等,全都 ...
- Spring 并发事务的探究
前言 在目前的软件架构中,不仅存在单独的数据库操作(一条SQL以内,还存在逻辑性的一组操作.而互联网软件系统最少不了的就是对共享资源的操作.比如热闹的集市,抢购的人群对同见商品的抢购由一位售货员来处理 ...
- delphi 10.2---非常简单的数组用法求和
unit Unit9; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...
- Java_多线程2_线程池
线程池(pool): 线程池的作用: 1.节省资源,减少线程的数量和创建销毁线程的开销2.合理的管理线程的分配 线程池的创建: 1.newCachedThreadPool //优点:很灵活,弹性的线程 ...
- python3的全局变量和局部变量
局部变量 定义在函数体内部的变量称为局部变量 函数的形参也是局部变量 局部变量的作用范围只在声明该局部变量的函数体内 局部变量在函数调用时被创建,在函数调用完成后自动销毁 全局变量 定义在函数体外,模 ...
- FlowPortal-BPM——创建新组织架构、表单、流程
一.创建新组织架构 (1)管理流程→组织管理→组织架构添加需要的组织架构→新建新成员或角色 (2)设置成员信息 二.创建新数据源(如果在已有的数据库中操作,只需要添加需要的表) (1)添加新数据库并添 ...
- TeamView 连接2、3事
问题1: 客户通过本地远程上服务器开TeamView让我们连,我们连上后发现开户一把她的远程关掉就卡住了. 如图,原来TeamView会启动多用户增强支持. 原来用的是用户ID连的,用户断掉远程后就不 ...
- 【JS新手教程】浏览器弹出div层1
JS中,可以弹出一个层来进行提示等作用,方法是利用css样式display样式,当display等于none时,该元素就不会在页面显示出来,而且元素也不会占空间.就是用户触发某些事件时,动态修改该样式 ...