前言

博客这种东西,一是为了当做笔记,二是为了当做草稿!

BEGIN和END

和构造函数、析构函数一样,给整个程序提供这样的功能!

puts "这是ruby主程序"#最后执行的END块
END{puts "停止ruby程序1"
}
#END块先执行末尾的,从下往上
END{puts "停止ruby程序2"
}#程序会首先执行BEGIN块,然后从头开始执行
BEGIN{puts "初始化ruby程序1"
}
#BEGIN块按顺序执行,从上往下
BEGIN{puts "初始化ruby程序2"
}

Number(Integer,Float)

数值类型(Number)
----------------------Integer
123                  # Fixnum 十进制
1_234                # Fixnum 带有下划线的十进制
-500                 # 负的 Fixnum
0377                 # 八进制
0xff                 # 十六进制
0b1011               # 二进制
"a".ord              # "a" 的字符编码
?\n                  # 换行符(0x0a)的编码
12345678901234567890 # 大数#整型 Integer 以下是一些整型字面量
#字面量(literal):代码中能见到的值,数值,bool值,字符串等都叫字面量
#如以下的0,1_000_000,0xa等
a1=0 #带千分符的整型
a2=1_000_000 #其它进制的表示
a3=0xa
puts a1,a2
puts a3 #puts print 都是向控制台打印字符,其中puts带回车换行符 ------------------------float
123.4                # 浮点值
1.0e6                # 科学记数法
4E20                 # 不是必需的
4e+20                # 指数前的符号#浮点型
f1=0.0
f2=2.1
f3=1000000.1
puts f3

字符串

字符串类型(String)
Ruby 字符串简单地说是一个 8 位字节序列,它们是类 String 的对象。
双引号标记的字符串允许替换和使用反斜线符号,单引号标记的字符串不允许替换,且只允许使用 \\ 和 \' 两个反斜线符号。puts 'escape using "\\"';
puts 'That\'s right';
>
escape using "\"
That's right使用序列 #{ expr } 替换任意 Ruby 表达式的值为一个字符串。在这里,expr 可以是任意的 Ruby 表达式。puts "相乘 : #{24*60*60}";
>
相乘 : 86400name="Ruby"
puts name
puts "#{name+",ok"}"
>
Ruby
Ruby,ok

数组

数组(Array)
数组字面量通过[]中以逗号分隔定义,且支持range定义。(1)数组通过[]索引访问
(2)通过赋值操作插入、删除、替换元素
(3)通过+,-号进行合并和删除元素,且集合做为新集合出现
(4)通过<<号向原数据追加元素
(5)通过*号重复数组元素
(6)通过|和&符号做并集和交集操作(注意顺序)ary = [ "fred", 10, 3.14, "This is a string", "last element", ]
ary.each do |i|puts i
end
>
fred
10
3.14
This is a string
last element

哈希

哈希(Hash)
hsh = colors = { "red" => 0xf00, "green" => 0x0f0, "blue" => 0x00f }
hsh.each do |key, value|print key, " is ", value, "\n"
end
>
red is 3840
green is 240
blue is 15

范围

范围(range)
范围可使用 s..e 和 s...e 来构造,或者通过 Range.new 来构造。
范围 (1..5) 意味着它包含值 1, 2, 3, 4 ,5
范围 (1...5) 意味着它包含值 1, 2, 3, 4 (10..15).each do |n|print n, ' '
end
>
10 11 12 13 14 15

变量

Ruby 类中的变量
Ruby 提供了四种类型的变量:局部变量:局部变量是在方法中定义的变量。局部变量在方法外是不可用的局部变量以小写字母或 _ 开始。实例变量:实例变量可以跨任何特定的实例或对象中的方法使用。实例变量可以从对象到对象的改变。实例变量在变量名之前放置符号(@)。类变量:类变量可以跨不同的对象使用。类变量属于类,且是类的一个属性。类变量在变量名之前放置符号(@@)。全局变量:类变量不能跨类使用。全局变量总是以美元符号($)开始。

类变量(@@a)

class Customer@@number=10  #类变量#必须是initialize,如果想new时带参数的话def initialize(id,name,addr)@c_id=id    #实例变量@c_name=name@c_addr=addrprint @@numberend
endcustomer1 = Customer.new("001","夏洛克福尔摩斯","贝克街128号")

全局变量($a)

$a=13   #全局变量
class Persondef Print_aputs "全局变量a在Person中的输出为" +"#$a!"end
end
class Animaldef Print_aputs "全局变量a在Animal中的输出为" \"#$a!"end
end
b=Person.new
b.Print_a
b=Animal.new
b.Print_a

Operator

-----------------------
算术操作Op:+ - * / **(指数操作) %求模-----------------------
比较操作Op:== != > < >= <= <=>联合比较运算符。如果第一个操作数等于第二个操作数则返回 0,如果第一个操作数大于第二个操作数则返回 1,如果第一个操作数小于第二个操作数则返回 -1。===用于测试 case 语句的 when 子句内的相等。(1...5)===2 返回true.eql?相同的类型和相等的值,则返回 true1==1.0 返回true1.eql?(1.0) 返回falseequal?相同的对象 id,则返回 true。如果 aObj 是 bObj 的副本,那么 aObj == bObj 返回 trueaObj.equal?bObj 返回 falseaObj.equal?aObj 返回 true。-----------------------
赋值运算符Op:= += -= *= /= %= **=-----------------------
逗号并行赋值
a,b,c=1,2,3-----------------------
位运算付Op:& | ^ ~ >> << -----------------------
逻辑运算符Op:and or not && || !-----------------------
三运运算符Op:?-----------------------
范围运算符
(1..10) 1到10
(1...10) 1到9-----------------------
是否定义判断符
defined?param 看param定义没,或初始化没

if(满足条件进入block)

x=1
if x>2puts "x>2"
elsif x<=2 and x!=0puts "x=1orx<0"
else puts "undefined x"
end# if 修饰符-------------------
$deb=101
print "deb>2\n" if $deb>2

unless(不满足条件进入block)

unless $deb>10   # unless 和 if 相反puts "kkkkkkk"
elseputs "sssss"
endprint "sdaiojwjdfe3qwe" unless $deb==34

case-when (和switch一样)

a=1
case a
when a == 1 then a=2 end
puts aa =  1
case a
when 0..1puts "0..1"
when 2..3puts "2..3"
when 4..5puts "4..5"
elseputs "other"
end

#{i} (普通变量在字符串中的输出)

for i in -4..3.5puts "局部变量的值为 #{i}"
end

break(打破内部循环块)

#终止最内部的循环-------------break
for i in 0..5if i > 2 thenbreakendputs "局部变量的值为 #{i}"
end

next(马上进入下轮循环)

#跳到循环的下一个迭代-------------next
#就是continue
for i in 0..5if i < 2 thennextendputs "局部变量的值为 #{i}"
end

redo(该轮循环重新循环)

#重新开始最内部循环的该次迭代-----------redo
for i in 0..5if i < 2 thenputs "局部变量的值为 #{i}"redoend
end

raise(满足条件抛出异常)

(0..5).each do |i|beginputs iraise 'error today' if i==2rescue => exceptionputs 'error i=199'i=199retry#retry 之后,变量 i 恢复到 raise 时的值end
end

范围(字母步进)

#("f".."a").each do |i|   error
("a".."f").each do |i|puts "value is #{i}"redo if i >"c"
end

文件写入

f=File.new('output.txt','a')
#f=File.open('output.txt','w')
f.puts "The Ruby tutorial"
f.close

#文件读取

File.open('learning.rb','r') do |handle|if handleputs handle.sysread(50)elseputs "unable to open file"end
end

文件写入

f=File.new("output.txt",'a')
f.syswrite("ABCDEFG")    #字符串后面没有被添加换行

逐行读取

buf = IO.readlines("output.txt")
(0..10).each do |i|puts buf[i]
end

Ruby:基本语法研究,宝石一样的语言相关推荐

  1. 数据统计与分析基础实验一:基本语法与运算(R语言)

    数据分析与统计基础实验一:基本语法与运算(R语言) 1.编写程序,记录十名学生的信息,至少包括姓名.年龄.出生年.数据统计分析课程实验成绩,程序输出前n个学生的年龄平均值.数据统计分析课程实验成绩平均 ...

  2. 【Groovy】Groovy 语言特点简介 ( 支持 Java 语法 | 支持 Java 虚拟机 | Groovy 语言是动态语言 | Groovy 扩展 JDK | 编译时元编程 )

    文章目录 一.Groovy 支持 Java 语法 二.Groovy 支持 Java 虚拟机 三.Groovy 语言是 动态语言 四.Groovy 扩展 JDK 五.Groovy 编译时元编程 一.Gr ...

  3. Java基础语法 第2节 Java语言基本语法

    一.标识符和关键字 1.标识符 1)java中标识符用来为程序的白能量.常量.方法.类.接口和包名命名,标识符由字母.数字.下划线.美元符号组成,且第一个字符不能是数字: 2)标志符命名规则:见名知意 ...

  4. 下列符合c语言语法的字符常量是,C语言程序设计(周经亚)选择题练习-chapter 5.doc...

    选择题练习一 下叙述中正确的是 [1] . A)在C程序中,main函数必须位于程序的最前面 B)C程序的每行中只能写一条语句 C)C语言本身没有输入输出语句 D)在对一个C程序进行编译的过程中,可发 ...

  5. 【1】C++语法与数据结构之C语言学生管理系统转C++学生管理系统

    从本文开始,后续将陆续发布C++语法与数据结构的相关内容,同样还是以学生管理系统来融汇贯通所有知识点. 接上篇博客[终极完美高效]C语言实用算法系列之学生管理系统_单向链表外排序_堆内数组存储链表节点 ...

  6. ruby基本语法(2)

    关于数组 Ruby数组中的数据类型可以不相同并且长度也是可变的.(好聪明啊感觉用的久了就会变笨了,除非你本来就是老手)比如下面的例子 Myarray=[1,2,"ruby"] Ru ...

  7. python语言的读法-就语法而言,Python 这个语言怎么样?

    Python的特点是语法简洁,如果是有过其他编程语言经验的朋友,对其他语言的语法会比较熟悉,初次接触Python可能会不太适应,不过随着Python语言的使用会逐步体会到这一点. Python有两个外 ...

  8. python语言的语法_Python第一章基本语言语法

    第一章:基本语法 1.1.1基本的输入输出函数 Print ( ) 作用:输出字符串 用法1: print('代输出字符串') 用法2:用于输出一个或多个变量 print(变量1,变量2,-) 用法3 ...

  9. 英语和汉语语法方面的区别(语言类型学)

    对于我们以汉语为母语而学习英语的人来说,会感觉汉语好像没有什么语法.对于母语者而言,语法是一种高度内化的东西,你有的不是像语法书那样的成文的语法规则,而是两个字:直觉. 其实汉语也是有时态的,确切地说 ...

最新文章

  1. 用cmd运行python文件_怎么用cmd运行python文件
  2. Unity3D的坑系列:动态加载dll
  3. tcpdump 识别成dns_为什么总能看到广告弹窗?没错,就是DNS的问题
  4. 第 3 章 镜像 - 010 - base 镜像
  5. 二分图带权最大匹配费用流_一文掌握阻抗匹配
  6. 被高中生物骗了这么多年,原来人体内细胞的DNA是有不同的?
  7. loadrunner录制回放常见问题及解决办法
  8. python--条件判断和循环--3
  9. at shutdown 不起作用_at胎是什么胎
  10. 服务器 uefi 安装win7系统,uefi安装win7_efi引导gpt安装win7教程
  11. Matlab代码运行基础文章讲解
  12. 切线和倒数_原函数的导数和反函数的导数为什么是倒数关系
  13. SQL注入漏洞 详解
  14. 贪吃小怪物显示服务器人数爆满,贪吃小怪物进不去怎么办 贪吃小怪物为什么进不去...
  15. 华为私有云的搭建方案_Kali linux 搭建私有云
  16. 如果人类起源是一部编程史
  17. UCF Local Programming Contest 2016 计蒜客解(补)题报告
  18. scratch自制积木
  19. 仿QQ概念版的登陆界面
  20. android launcher开发(4) Home键与launcher

热门文章

  1. 【POJ 3321】Apple Tree(树的dfs序+树状数组)
  2. 各国家域名总量统计Top10:美国德国中国居前三
  3. H3C堆叠实验配置(精品系列避坑篇)
  4. acme.sh免费签发SSL证书
  5. 【集训DAY4】Forging【期望DP】
  6. Day10 面向对象 、类和对象的关系
  7. linux7磁盘文件类型,CentOS 7 查看磁盘文件系统格式
  8. rabbitmq publisher(生产者)注意的几个点
  9. GUI设计禁忌 之一 ——使用了错误的控件
  10. C++GUI之wxWidgets(2)-hello,world