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

循环:

  最简单的循环实现代码如下:

1 10.times do print " hello" end   #表示循环10次打印 " hello"
2 # 这里使用了 Fixnum对象的times方法 

定义类:

1 class Person
2     attr_accessor :name, :age, :gender       # 定义属性
3 end    

定义完类之后,就可以进行实例化了: person = Person.new person.name = "KiDe" person.age = 25 person.gender = "male" ruby当然和其他面向对象的编程语言一样也支持继承,继承的使用通过 < 来实现:

1 class NewPerson < Person
2     attr_accessor :health
3 end

此时该新的类拥有前面的类的所有属性并且多了一个叫health的属性 Ruby可以很轻松的对类进行扩展(即使是内置的类):

1 class Person 
2     def greeting 
3         puts "Hello " + self.name
4     end
5 end    

PS:在ruby中这不会覆盖原来person的定义,相反只是在原来person的定义之上增加了一个方法,这样Person类和其子类都可以调用该方法。当然如果子类对新增的方法进行复写,那么就形成了多态。

一切皆是对象: 可以通过 puts person.class puts 1.class 来查看所有数据类型所属的对象类型

1 puts 1.class     #Fixnum
2 puts "a".class  # String

Kernel模块的方法: Kernel是个特殊的类,他的方法在ruby的每个类和范围中都有效,其中前面用到的 puts 和 print方法都属于该类。 我们也可以使用 Kernel.puts 来进行输出 ,当ruby发现方法的调用方为空的时候就会去Kernel模块去找。

向方法中传入参数: 对于puts这种只有一个参数的方法,可以直接通过 puts "Hello " 将要传入的参数直接放到方法后面,但当方法有多个参数的时候,建议使用括号。

使用字符串的常见方法:

 1 "test" + "test"         #  testtest
 2 "test".capitalize     #  Test
 3 "Test".downcase  # test
 4 "Test".chop            # Tes    (去掉最后一个字符)
 5 "Test".hash           # -98625764
 6 "Test".next             # Tesu
 7 "Test".reverse       # tseT
 8 "Test".sum            # 416
 9 "Test".swapcase  # tEST
10 "Test".upcase        # TEST

所有方法都返回一个新的String对象,所以支持链式调用。

以非面向对象的方式使用Ruby: 可以直接在main函数中定义一个新的方法,然后直接调用。这个调用的时候是没有带任何对象的。其实该方法也属于Kernel对象。也可以通过Kernel. 调用:

1 def myPrint(value)
2     print "This is myPrint:" + value
3 end
4 
5 # 可以通过下面的方式进行调用:
6 myPrint("Haha")
7 Kernel.myPrint("Haha")

通过Kernel.methods 可以得到 Kernel的所有方法,里面可以看到有 :myPrint 的签名。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python入门

python超详细的基础笔记你学会了么

python是一种面向对象的解释型计算机程序设计语言,python的是吉多·范罗苏姆(Guido van Rossum)于1989年发明

892
来自专栏维C果糖

史上最简单的 MySQL 教程(二十三)「数据的高级操作 之 查询(上)」

字段别名,即当数据进行查询的时候,有时候字段的名字并不一定满足需求(特别地,在多表查询的时候,很可能会有同名字段),这时就需要对字段进行重命名、取别名。

3446
来自专栏跟着阿笨一起玩NET

C# Eval在aspx页面中的用法及作用

682
来自专栏python成长之路

My SQL常用操作汇总

1754
来自专栏前端架构

Eslint静态代码检查——参数配置详细说明

在团队协作中,为避免低级 Bug、产出风格统一的代码,会预先制定编码规范。使用 Lint 工具和代码风格检测工具,则可以辅助编码规范执行,有效控制代码质量。

331
来自专栏北京马哥教育

python3急速入门 (二) 列表的使用

云豆贴心提醒,这是马哥Linux运维Python3急速入门系列第1篇文章 列表用于组织其它数值,即写在方括号之间、用逗号分隔开的数值列表。列表内的项目不必全是...

2575
来自专栏JarvanMo的IT专栏

Dart In Action -Dar的基本数据类型(一)

本文基本上是将dart官网部分内容进行翻译,没兴趣的请出门左转至Dart的官网,有兴趣的同志请继续阅读本文。 Flutter教程在这里

642
来自专栏PHP技术

8个与安全相关的PHP函数

1. mysql_real_escape_string() 这个函数对于在PHP中防止SQL注入攻击很有帮助,它对特殊的字符,像单引号和双引号,加...

32712
来自专栏闪电gogogo的专栏

Python——正则表达式

此篇文章结合小甲鱼的笔记和视频整理。 1 编译 Python 通过 re 模块为正则表达式引擎提供一个接口,同时允许你将正则表达式编译成模式对象,并用它们来进行...

24110
来自专栏JetpropelledSnake

Python入门之函数的介绍/定义/定义类型/函数调用/Return

 本篇目录:     一、 函数的介绍     二、 函数的定义     三、 定义函数的三种类型     四、 函数调用的阶段     五、 Return返回...

3655

扫描关注云+社区