print()

puts()

p

  -Ks, -Ku

ruby 能够正常的计算算数表达式,8+4/2 = 10 而不是 6

注释

  # 行首,行中

  =begin和=end之间的都会视为注释

  没有行中的注释,注释掉一行中间的某些东西

控制

  if - then - end # then 可以省略

  if - then - else - end

  if - then - elsif - end

循环

  while - do - end #do 可以省略

times  # Ruby的一个特点

  是一个方法,{}中放将要被重复执行的代码

def - method body - end

require "fileName"

  ruby库中的文件可以直接引用

  其它的需要指明路径,如"./fileName"


Array

names = ["赵", "钱", "孙", "李"]  #逗号分隔,中括号

获取元素时,也是用[]中括号。如names[0],值为"赵"

数组的大小可以任意改变。(变小?不清楚)

数组元素的类型可以变换

数组的大小可以用.size获得

each语法:

array.each{|name|#do something on name
}

Hash

some_hash = {"key1"=>value1, "key2"=>value2,...}

获取元素: some_hash["some_key"]

hash 元素没有固定的顺序,所以只能通过key来获取其值

each语法:

hash.each{|key, value|#do something on key and value
}

重定向 >

ruby some_file.rb > somefile.suffix

if 的判断条件除了false,nil之外所有的东西都认为是true


ARGV[]数组,是用来保存传递进来的参数的数组

ARGV[0]指代传递给ruby程序的第一个参数,ARGV[1]指代传递给ruby程序的第二个参数,

字符串转换成数字——to_i

文件读取

读取整个文件

file = open(filename)
text = file.read
#do somthing
file.close

一点点的读

file = open(filename)
while text = file.gets do#do something
end
file.close


变量

局部变量  :  以小写字母或_开头的变量

全局变量  :  以$开头的变量(建议少使用)

实例变量  :  以@开头的变量

类变量     :  以@@开头的变量

虚拟变量  :  true, false, self等

常数:必须以大写字母开始(貌似是全部大写)

变量,方法命名:单词1_单词2_单词3

变量是否指向同一个对象,判断用equals?。

name = "testName"

name2 = name

name.equals?(name2) # true

对象值是否相等用,==

str = "foo"

str2 = "f" + "o" + "o"

str == str2 #true

== 和 eql?很像,除了在数字的比较上。

1 == 1.0 #true

1.eql?1.0 #false  注意写法


字符串是否为空的判断:str.empty?

当让一个方法的返回结果为真假值的时候,这个方法的命名最好后面加上一个?。这是Ruby的规则。

&&, ||, !

and, or, not

意义相同,优先级不同。下面的优先级低。

unless与if条件相反

只有怎样的时候,才执行。

case when# when后面可以写上很多值

case some_var
when "value1", "value2" then#do something
when "value3", "value4" then#do something
else#do somthing
end

when 还可以接收Numeric, String这种类型,用来判断some_var是不是该类型

print "a > b" if a > bif a > b thenprint "a > b"
end

以上两端的意义是相同的。。。

===

当左边的值是数值或字符串,与==意义相同;

当左边是类,则判断是否属于该类;

当左边是正则表达式时,获取值所在的位置;


times:以下两种形式相同,从使用方法上来看,貌似是一种方法

number.times{ |i|  #可选#do something
}number.times do |i| #可选#do something
end

times中可以追加|i|,这个i保存当前循环次数,但是不建议使用

for,其中没有|key|等,没有{}的写法

for i in begin_num .. end_num do#do something
end

# 遍历some_container中的对象for i in some_contain do#do something
end

没有++,只有 m += 1

each,方法,接受||变量,如hash中的|key, value, other|  #这里的other不会出错,但是没有值

something.each do |some|#do something
end

something.each {|some|#do something
}

until,跟unless挺像,只有满足条件了,才跳出循环

break: 跟JAVA一样

next:跟java的continue一样

redo:循环体上的游标不会向下执行,而是停留在原处。。。


方法的分类

实例方法:类的实例调用的方法

类方法:类名调用的方法,可以用.也可以用::。如Array.new,Array::new

  这是一种不区分类型对象的方法,只要是这个类的对象,执行结果都是一样的。

函数型方法:没有方法接受者的方法,如sin(24), print 10等等

  这是一种不会区分类型,对象的方法,也就是说任何类,任何对象调用这个方法都会实现相同的效果。

方法定义:

def method_name(param1, param2...)#do something
end

注意:没有{},没有do,()要紧跟着方法名称

给方法设定预定值:

def method_name(param1 = "Voctrals")#do something
end

这种情况下,如果没有给方法传递参数,那么Voctrals就作为参数传递给method_name。

如果有多个参数,那么预定值只能从右侧开始。。。因为方法的调用没有参数占位符!!!

方法的返回值:

1 用return返回结果

2 用return跳出方法体

3 如果没有return的话,方法的最后代码的返回值为结果返回给方法的调用者

4 如果方法没有返回值,那么方法的返回值为nil


创建一个类的新的对象,必须使用new关键字,如Array.new。

class方法,这个方法可以用来检查一个对象所属的类,如:"test".class。

instance_of?方法用来检查一个对象是不是参数指定类型的一个实例,如"string".instance_of? Array 返回值为true。"string".instance_of? Object 返回值为false。

  调用方法需要使用.,但是括号可以省略。。。

Object类,所有类的父类,它定义了好多方法

is_a?用来判断一个对象是不是参数指定的类型。如"string".instance_of? Array 返回值为true。"string".instance_of? Object 返回值为true。

转载于:https://www.cnblogs.com/voctrals/p/4031667.html

Ruby First相关推荐

  1. Ruby: Ruby脚本在测试中的使用

    如果存在以下的场景: 1. 放置在公司的读报机服务器,每天都是开启的: 2. 读报机每天下载报纸,一旦成功/失败,就会有相应的记录生成在某个xml文件中: 3. 现在有过去一年的读报机下载xml,大约 ...

  2. Ruby 之 Block, Proc, Lambda 联系--区别,转载

    Ruby 之 Block, Proc, Lambda Block Block 不是对象,是Ruby的语言特性,近似于闭包(Closure). 范例: def meth    res=  yield   ...

  3. Ubuntu14.04 LTS中安装Ruby 2.4源码操作步骤

    (1).查看是否已安装ruby,执行命令,如下图,可见机子上还没有安装ruby,即使通过apt-get install命令安装也只能安装1.8版本: (2).从  http://www.ruby-la ...

  4. Windows Ruby使用Mysql环境配置

    windows下Ruby使用mysql时候报错: Incorrect MySQL client library version! This gem was compile d for 6.0.0 bu ...

  5. [翻译] Ruby Golf

    原文地址:http://rubysource.com/ruby-golf/ Ruby golf is the art of writing code that uses as few characte ...

  6. Ruby DSL介绍及其在测试数据构造中的使用(2)

    在(1)中介绍了DSL和普通的函数定义之间的区别.在(1)的最后提到,DSL分为内部DSL和外部DSL,我们再看一遍他们的定义:1. External DSLs 用不同于host语言的语言来编写,通过 ...

  7. Ruby DSL介绍及其在测试数据构造中的使用(1)

    什么是DSL?英文全称Domain Specific Language,中文解释为领域专用语言.顾名思义,DSL是针对某个特定领域而开发的语言.像我们平时接触到的C/C++,Java,Python/R ...

  8. Some Rules from wrting your own dsl with ruby

    来自:http://blog.nofail.de/2010/02/writing-your-own-dsl-with-ruby/ Some Rules from wrting your own dsl ...

  9. Agile DSL Development in Ruby 笔记

    pdf见:http://obiefernandez.com/presentations/obie_fernandez-agile_dsl_development_in_ruby.pdf 1. What ...

  10. Ruby之Tempfile

    今天又机会尝试了下Ruby的Tempfile库,相比于自己创建临时文件再删除的方法简便了很多. require 'tempfile'tmp = Tempfile.new("tmp" ...

最新文章

  1. create-react-app my-app 报错解决方法
  2. 算法结构2.希尔排序
  3. MySQL与优化有关的命令_MySQL优化全攻略-相关数据库命令
  4. Android内存控制小技巧-使用矢量图来节省你的内存并简化你的开发。
  5. android studio无线真机调试
  6. SpringBoot加Jquery实现ajax传递json字符串并回显消息(已实践)
  7. python实现程序安装_使用python实现对windows软件包的安装和卸载
  8. 【CodeForces - 278C 】Learning Languages(并查集,思维)
  9. python 日期排序_python 日期排序
  10. DDoS booter滥用 DTLS 服务器放大攻击
  11. Quartus仿真步骤
  12. 上海市职称英语计算机报名,全国职称计算机考试
  13. 干货3分钟搞懂私募投以及技术面试
  14. 车轱辘通知挪车、车牌识别
  15. 思科模拟器实现不同网段主机互ping
  16. codeforces 581B Luxurious Houses(线段树点更新,区间查询)
  17. 凹入法写入指定目录至文档,并计算目录大小
  18. 嵌入式单片机基础篇(二十七)之Stm32F103单片机给蓝牙模块发送AT指令程序
  19. html5统计鼠标点击的次数,怎么实现js统计鼠标点击次数
  20. 将yolov2-tiny模型部署到前端

热门文章

  1. 迁移学习——数据不够的情况下训练深度学习模型
  2. 容器与微服务持续交付
  3. apt update时出现签名无法验证,公钥失效的解决办法
  4. cocos2d0基础篇笔记二
  5. 【转】程序员的十种级别
  6. 【转】Redis的各项功能解决了哪些问题?
  7. 索引大小对语句执行速度的影响
  8. yum和apt-get 软件包管理器的用法及区别
  9. [BZOJ2048] [2009国家集训队] 书堆
  10. Python MapReduce