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. Django. No changes detected when "makemigrations"

    在修改了models.py后,有些用户会喜欢用python manage.py makemigrations生成对应的py代码. 但有时执行python manage.py makemigration ...

  2. VS 2015 报错 " 'unistd.h': No such file or directory" 的解决办法

    使用 Visual Studio 2015 进行程序开发工作时,如果编译的是来自于Linux平台的源文件,该源文件可能会包含头文件 uninstd.h,这样会产生报错信息: "fatal e ...

  3. FineReport中如何制作树数据集来实现组织树报表

    1. 问题描述 FineReport,组织树报表中由id与父id来实现组织树报表,若层级数较多时,对每个单元格设置过滤条件和形态会比较繁琐,因此FineReport提供了一种特殊的数据集——树数据集, ...

  4. loadrunner 脚本开发-web_custom_request函数详细介绍

    脚本开发-web_custom_request函数详细介绍 by:授客 QQ:1033553122 c语言版本: int web_custom_request(const char *RequestN ...

  5. Android系统执行Java jar程序 -- dalvik运行dex Java工程

    本文仅针对纯java工程执行进行诠释,一般在PC平台作为jar包形式存在,在Android平台则以dex包形式存在. Java属于高级程序语言,Java程序需要运行在特定的虚拟机中,虚拟机将Java字 ...

  6. 第二篇 windows container 微软的原生容器

    先上图,显示windows container的体积: 以下是我使用docker pull 命令下载后,又用命令保存到本地的,相对于linux container体积依然巨大无比:据官方新闻,微软原生 ...

  7. 《Javascript权威指南-第6版》

    第3章 类型.值和变量 3.2 文本 3.2.1 字符串直接量 建议:在javascript中使用单引号表示字符串,在HTML中使用双引号表示字符串; 3.2.2 转义字符 \n 换行符 \r 回车符 ...

  8. Fusion 360教程合集27部

    Fusion 360教程合集27部 教程格式:MP4和flv 等格式 使用版本:教程不是一年出的教程,各个版本都有 (教程软件为英文版) 教程格式:MP4.FLV等视频格式 清晰度:可以看清软件上的文 ...

  9. 在 Azure Resource Manager 中为虚拟机设置密钥保管库

    Note Azure 具有两种不同的部署模型,用于创建和处理资源:Resource Manager 模型和经典模型.本文介绍使用 Resource Manager 部署模型.Azure 建议对大多数新 ...

  10. AD RMS企业文件版权管理

    AD RMS (AD权限管理服务)能够确保企业内部数字文件的机密性,例如,用户即使有权限读取受保护的文件,但是如果未被许可,就无法复制与打印该文件. AD RMS概述 虽然可以通过NTFS权限来设置用 ...