ruby入门掌握其实很简单,下面对我司主要使用的部分入门做一个简单的归纳总结:

本文的文章结构:

1、变量

2、操作符

3、ifelseend 、unless

4、数组(Array)

5、哈希(Hash)

6、循环(each do|变量|)

                                                                                                                                                                             1、变量

变量分为:整数型(int);浮点型(float);布尔型(bool);字符串型(string)

int型:1,2,3

float型:1.2

bool型:true/ false

string型:"abc"

不同类型间的转换:

.to_f :转为浮点型

.to_s:转为字符串型

例如

p 123.to_s

=>"123"

变量分为:全局变量($),局部变量和类变量(@@),它们的作用范围由大到小排列

                                                                                                                                                                                  2、对于变量而言含有的操作符

对于int和float,为倍数相乘,但是对于字符串,即为重复几次,例如:

str1 = "a"

p str1
3

=>"aaa"

对于字符串,+也有特殊意义,为字符串间的简单拼接

②|| 或(一真全真)、&&且(一假全假) 、!非 (特别注意 nil为假)

③三目操作符:

口?口:口 问号前面的是布尔型的判断,true的话执行第二个方块的语句,false的话执行第三个方块的语句

例如:

value =(nil ? 0 : 1)

p value

=>1

⑤== 表示判断,两侧是否相等,相等为true,不相等为false

3、if语句的基本知识

if elseend 不要丢掉end哦!!!

例如:

num = 100

if num <100

p "数字小于100"

elsif num >100 #elsif 后面还是可以加判断条件的

p "数字大于100"

else #else 就是指其他的,后面不能再加判断条件

p "数字等于100"

end

=> "数字等于100"

if还能这样用:

num = 100

p "数字等于100" if num =100 #if后面的判断为真后,再去执行前面的语句

=> "数字等于100"

与if一样同为判断的还有一个方式:unless 用法就是unless后面的条件不成立,才会执行下一条语句,否则就跳到下一个判断,因为逻辑比较绕,所以一般多于1个判断的时候,就直接用if好了。

例如:

num = 50

p "数字小于100" unless num>100

                                                                                                                                                                                4、数组的基础知识及方法

数组(Array)

创建一个新的数组可以这样:arr = Array.new ,或者直接定义一个空的数组 :arr = [ ],这个中括号就是数组的标志。

①最重要的知识点就是 索引,就是数组所在的位置,它是有序的,在物理磁盘按照顺序存储,它跟python一样,都是从0开始计数

arr = [1,2,3,4,5]

p arr[0]

=>"1" #拿出来一个元素,不是数组哦

p arr[-1] #取倒数第一个元素

=>"5"

②数组内的操作符:

加号(+)单纯的将两个数组连接,不做去重;

减号(-)用前一个数组减去后一个数组里的东西,只对被减数做修改;

取并集“|”(可以看到,比对于变量的操作,少了一个竖杠);

取交集“&”(可以看到,比对于变量的操作,少了一个&);

数组间的拼接: “<<” 这个字符的意思是拼接,并不是将两个数组简单的拼接起来,这跟字符串中的用法不一样,它是把箭头后面的元素作为一个新的元素加到左边的数组里面去。

例如:

数组1 = ['1','2','3']

数组2 = ['1','3','4']

p 数组1 - 数组2

=>["2"]

p 数组1 + 数组2

=>["1", "2", "3", "1", "3", "4"]

p 数组1 | 数组2 #数组里的取并集,是一个竖杠"|",而变量里面是"||"

=>["1", "2", "3", "4"]

p 数组1 & 数组2 #你看,数组里的取交集,是一个&

=>["1", "3"]

例如:

p ['1','2','3']<<["aaa"]

=> ['1','2','3',['aaa']]

方法:

.empty? #判断是否为空,输出结果为布尔型

a = ["a","b","c"]

p a.empty?

=>false

.include?("变量") #判断是否含有某元素,输出结果为布尔型

a = ["a","b","c"]

p a.include?("c")

=>true

.index("元素") #寻找某个元素的索引

a = ["a","b","c"]

p a.index("c")

=>2

.size #查询数组的长度

a = ["a","b","c"]

p a.size

=>3

                                                                                                                                                                            5、哈希的基础知识和方法

创建一个新的哈希可以这样:hash = Hash.new ,或者直接定义一个空的哈希 :hash = {},这个中括号就是哈希的标志。

哈希是以键值对的形式存在的,表达方式有2种,我司常用的是{“a”=>“b”}形式,一个key可对应多个value,它们是在物理地址是不连续的,所以没有索引的说法,而是通过key去查找对应的value,效率会高于数组。这个哈希其实就相当于python里的字典。

所以定位哈希的时候,是用key去定位的,hash[key ],例如:

hash= {"a"=>"b","c"=>"d"}

p hash["c"]

=>"d"

下面简列一下hash的方法:

empty? #判断是否为空,输出结果为布尔型

a = {}

p a.empty?

=>true

.include?("value") #判断是否含有某元素,输出结果为布尔型

hash= {"a"=>"b","c"=>"d"}

p hash.include?("f")

=>true

.size #查询哈希的个数,记住,是以键(keys)为标准

hash= {"a"=>"b","c"=>"d"}

p hash.size

p=>2

.keys #这个方法是将哈希里的所有键取出来,组成1个数组

hash= {"a"=>"b","c"=>"d"}

p hash.keys

=>["a", "c"]

.value #这个方法是将值取出来,组成一个数组

hash= {"a"=>"b","c"=>"d"}

p hash.values

=>["b", "d"]

另外,哈希里面的value,不一定是字符串,还有可能是数组,例如:

hash= {"a"=>["b","e"],"c"=>"d"},这样都是允许的,如果我想定位到元素“e”,很简单,如下操作就可以:

p hash["a"][1]

=>"e"

6、循环

循环首先简单介绍三种方式:请记住都有end作为结尾哦!~并且这里面的变量并没有用""引号给引起来

①.each do |命名变量|

...

end

②.each_with_index do |元素,索引| #这里命名变量,是2个变量。应用于数组,将数组的元素拿出来,并将其位置表示出来.特别需要注意的是,这里面的变量并没有用""引号给引起来

p 元素

p 索引+1

end

③0.upto (n) do |命名变量| #这个方法可以用来将数组(array)进行循环,且n>=0,当然,那个0也不是固定值,看你需要定位到哪个元素。而且既然有upto,当然也就有downto,这个不多说。记得凡是方法,都有".";中间都有空格!!

...

end

现在举几个例子熟悉一下:

对于数组的循环,取出里面的所有元素,举例如下:

arr = ["a", "b", "c"]

arr.each do |元素|

p 元素

end

=>"a"

"b"

"c"

arr = ["a", "b", "c"]

arr.each_with_index do |元素,索引|

p 元素

p 索引+1

end

=>"a"

1

"b"

2

"c"

3

arr = ["a", "b", "c"]

0.upto (2) do |索引|

p arr[索引]

end

=>"a"

"b"

"c"

对于哈希的循环,一种就是将每一个的key-value组成一个数组,并将其输出。例如:

hash= {"a"=>["b","e"],"c"=>"d","dada"=>[1,2,3]}

hash.each do |内容|

p 内容

end

=>["a", ["b", "e"]]

["c", "d"]

["dada", [1, 2, 3]]

如果针对上面的哈希,我想要输出形成的数组的特定值,比如第一个元素:

hash= {"a"=>["b","e"],"c"=>"d","dada"=>[1,2,3]}

hash.each do |内容|

p 内容[0]

end

=>"a"

"c"

"dada"

hash= {"a"=>["b","e"],"c"=>"d","dada"=>[1,2,3]}

hash.each do |内容|

p 内容[1][0]

end

=>["b", "e"]

"d"

[1, 2, 3]

hash= {"a"=>["b","e"],"c"=>"d","dada"=>[1,2,3]}

hash.each do |内容|

p 内容[1][1]

end

=>"e"

nil #由此可以看出,当索引超出了数组的长度时,不会报错,而是nil

2

另一种就是输出键“\n”值,但不组成数组,用的是.each do|键,值|,例如:

hash= {"a"=>["b","e"],"c"=>"d","dada"=>[1,2,3]}

hash.each do |键,值|

=>p 键

p 值

end

相信通过上面的简要介绍,对于ruby语法的基础是有了,继续加油更新哦~~

Ruby知识总结-一般变量+操作符+if+数组和哈希的更多相关文章

  1. 判断一个js变量是否为数组

    今天小编给大家整理些关于javascript判断变量是否是数组(Array)的相关知识,主要通过以下四点给大家展开话题,具体内容如下所示: 1. typeof真的那么厉害吗?? //首先看代码 var ...

  2. Smarty笔记 和20个常用的变量操作符

    什么是Smarty变量操作符php模板引擎smarty内置的一些操作函数,我们称之为变量操作符,变量操作符可用于操作变量,自定义函数和字符.(跟我PHP中常用的PHP内部函数类似)他可以帮助我们完成很 ...

  3. Perl 引用:引用就是指针,Perl 引用是一个标量类型可以指向变量、数组、哈希表(也叫关联数组)甚至子程序。

    Perl 引用引用就是指针,Perl 引用是一个标量类型可以指向变量.数组.哈希表(也叫关联数组)甚至子程序,可以应用在程序的任何地方. 1.创建引用1.使用斜线\定义变量的时候,在变量名前面加个\, ...

  4. 如何判断一个变量是否为数组(isArray)

    在我们平时的工作中经常会用到如何判断一个变量是否为数组.常用的方法很多,有用常用框架里面的,isArray.但是关于这个isArray的实现,各有不同. 常用的方法有如下几种 1.instanceof ...

  5. JavaScript 用七种方式教你判断一个变量是否为数组类型

    JavaScript 如何判断一个变量是否为数组类型 引言 正文 方法一 方法二 方法三 方法四 方法五 方法六 方法七 结束语 引言 我们如何判断一个变量是否为数组类型呢? 今天来给大家介绍七种方式 ...

  6. Perl 数据类型:标量、数组、哈希

    Perl 数据类型Perl 是一种弱类型语言,所以变量不需要指定类型,Perl 解释器会根据上下文自动选择匹配类型. Perl 有三个基本的数据类型:标量.数组.哈希.以下是这三种数据类型的说明: 序 ...

  7. 初识JavaScript 变量, 操作符, 数组

    这里讲的不会太多, 因为所有的语言都是一样的, 一些基本的东西, 所以就随便写写. 变量 变量就是可变的量, 编程角度理解就是用于存储某种/某些数值的存储器. 我们可以把变量具象理解为一个盒子, 而我 ...

  8. 【iOS发展-44】通过案例谈iOS重构:合并、格式化输出、宏观变量、使用数组来存储数据字典,而且使用plist最终的知识

    我们今天的情况下是第一个例子,下面的5一来通过切换页上一页下一页: (1)第一步,基本是以非常傻非常直接的方式来创建.这里用到的主要点有: --把对象变量设置为全局变量使得能够在其它方法中调用来设置它 ...

  9. C语言基础知识点整理(函数/变量/常量/指针/数组/结构体)

    函数 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...

随机推荐

  1. springboot 1.3.5升级1.5.9后 默认使用tomcat 8.5版本 get请求报400 异常信息为 The valid characters are defined in RFC 7230 and RFC 3986

    1.springboot 1.3.5升级1.5.9后 默认使用tomcat 8.5版本而之前用的是tomcat7    get请求报400 异常信息为 The valid characters are ...

  2. vm virtualBox下 centos7 Linux系统 与本地 window 系统 网络连接 配置

    由于要模拟生产环境开发,所以要在自己的电脑上安装虚拟机,这里做一下记录. centos与本机网络连接 1. 环境 虚拟机 VirtualBox-5.2.0-118431-Win Linux镜像 Cen ...

  3. 白盒测试实践-day....

    时间:2017.12.22 地点:软件学院 参与人员:张双双.张玉.周静.赵天宇 会议内容:对代码测试的内容进行总结,总结任务由赵天宇完成,其余同学提出自己的看法和意见. 总结内容分为了五个阶段,不同 ...

  4. 从MySQL slave system lock延迟说开去

    本文主要分析 sql thread中system lock出现的原因,但是笔者并明没有系统的学习过master-slave的代码,这也是2018年的一个目标,2018年我都排满了,悲剧.所以如果有错误 ...

  5. Django之MVC与MTV

    MVC框架 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写 模型 - 视图 - 控制器是一种通常用于开发用户界面的 ...

  6. [Python_5] Python 线程

    0. 说明 Python 线程笔记 1. 低级 API # -*-coding:utf-8-*- """ 线程 """ "&quo ...

  7. ES6+转ES5

    npm init //创建package.json文件 下载转换babel库及其100+依赖 npm install babel-cli -D npm install babel-preset-env ...

  8. 团队作业7——第二次项目冲刺(Beta版本)day2

    项目成员:  曾海明(组长):201421122036 于波(组员):201421122058 蓝朝浩(组员):201421122048 王珏 (组员):201421122057 叶赐红(组员):20 ...

  9. JAVA内存管理 [转]

    首先我们要明白一点,我们所使用的变量就是一块一块的内存空间!!   一.内存管理原理:   在java中,有java程序.虚拟机.操作系统三个层次,其中java程序与虚拟机交互,而虚拟机与操作系统间交 ...

  10. angularjs ngRoute和ui.router对比

    ngRoute模块是angularjs自带的路由模块,ui.router是一个第三方路由模块,接下来将对两者进行一个对比: ng-router(angular-router.js) ng-view n ...