Ruby基本语法规则
1.Ruby常用数据类型 Numbers, Strings, Booleans
my_num = 25 my_boollean = true (or false) my_string = "Ruby"
2.Ruby常用数学计算操作符
加(+)
减 (-)
乘 (*)
除(/)
幂次方 (**)
求余 (%)
3.Ruby 输出操作
puts 带换行 print 不带换行 打印字符串: print "HelloWorld" (不换行) puts "HelloWorld" (换行) 打印变量: name = "Ruby" print "#{name}" #注意格式 "#{xxx}"
4.字符串常用操作函数
.length(计算字符串长度) name = "Ruby" name.length (返回4 等价于 "Ruby".length) .reverse(反转字符串) name.reverse(返回 ybuR 等价于 "Ruby”.reverse) .upcase & .downcase (转换大小写) name.upcase 和 name.upcase 分别返回 RUBY ruby
5.单行注释与多行注释
单行注释以 # 开头 eg. #I'm a comment
多行注释格式为
=begin
I'm a comment!
I don't need any # symbols.
=end
注意:=和begin和end之间不能有空格 begin后面也不要有空格
6.变量命名规则
变量名一般以小写字母开头, 单词之间用下划线分割, eg. counter, mastrful_method Ruby不会阻止你用特殊符号如$, @等开头, 但是最好不要这么做, 容易产生歧义, 可读性降低。
7.方法调用
用.操作符调用方法 可以每次单独调用一个方法也可以进行联合调用 如:name = "Ruby" 可以 name.downcase name.reverse name.upcase 也可以 name.downcase.reverse.upcase 这样调用
8.获取输入
print "what's your first name?"
first_name = gets.chomp gets是用来获取输入信息的方法,Ruby在其后面自动添加一个换行符\n chomp是用来删除换行符的方法。
eg:
print "What's your first name?"
first_name = gets.chomp
print "What's your last name?"
last_name = gets.chomp
print "What are you from?"
city = gets.chomp
print "what's your state?"
state = gets.chomp print "#{first_name} #{last_name} #{city} #{state}"
9.Ruby的程序控制流
条件判断句 if/else的用法
print "Integer please: "
user_num = Integer(gets.chomp) if user_num < 0
puts "You picked a negative integer!"
elsif user_num > 0
puts "You picked a positive integer!"
else
puts "You picked zero!"
end 注意要以end结尾 elsif的写法(区别于elseif)
unless的用法
if(x<5) then statement1 end
unless x>=5 then statement1 end
这两句是对等的 if x<5 then statement1
else
statement2
end unless x<5 then statement2
else
statement1
end
也对等 unless 用来检验后面条件是否为假, 若假则执行后续代码, 若真则执行else (unless 相当于 if not)
比较运算符
相等 == 不等 != 大于 > 大于等于 >= 小于 < 小于等于 <=
逻辑运算符
与 && 或 || 非 !
循环语句while用法
counter =
while counter <
puts counter
counter = counter +
end #注意以end结尾
循环语句until, 当until后条件满足时跳出循环(相当于 while not)
counter =
until counter >
puts counter
# Add code to update 'counter' here!
counter +=
end #注意以end结尾
注意: Ruby中没有前++和后++,前--后--。 但有+=, -=
for循环的用法
for num in ... #三个点表示前闭后开 输出1-
puts num
end for num in .. #两个点表示前后都封闭, 输出1-
puts num
end
loop循环的用法 (相当于C里的 do...while)
i = 20
loop do
i -= 1
print "#{i}"
break if i <= 0
end
next的用法 (同C语言continue)
i = 20
loop do
i -= 1
next if i % 2 != 0
print i
break if i <= 0
end
输出 18 16 14 12 10 8 6 4 2 0 nil
10.数组
一维数组表示方法: array = [1,2,3,4,5] #注意 用中括号 一维数组的遍历:
array = [1,2,3,4,5]
方式一:
array.each { |x| print"#{x+10}" } #可以在||之间使用任何变量名, 用来保存从数组中取得的值 方式二:
array.each do |x|
x += 10
print "#{x}"
end 多维数组的遍历:
s = [["ham", "swiss"], ["turkey", "cheddar"], ["roast beef", "gruyere"]]
s.each do |sub_array|
sub_array.each do |y|
puts y
end
end
.times 的用法
.times像是for循环的超级压缩版
10.times {print "xxx"} #打印10次 "xxx"
11.hash的用法
hash可以存储键值对,即key/value
创建hash
方式一:
my_hash = { "name" => "Eric",
"age" => 26,
"hungry?" => true
} puts my_hash["name"] #打印出 Eric
puts my_hash["age"] #打印出 26
puts my_hash["hungry?"]#打印出 true 在花括号中添加key/value 对
用=>符号来实现key/value的对应 方式二 用Hash.new方法创建hash
pets = Hash.new #注意Hash首字母要大写
pets["Stevie"] = "cat"
pets["Bowser"] = "hamster"
pets["Kevin Sorbo"] = "fish" puts pets["Stevie"]
puts pets["Bowser"]
puts pets["Kevin Sorbo"] Hash.new 创建了一个空的hash
可以用类似数组的方式向构造出的hash对象添加key/value, key作为下标, value作为值
同样可以用类似数组的方法打印key对应的value 遍历hash
restaurant_menu = {
"noodles" => 4,
"soup" => 3,
"salad" => 2
} restaurant_menu.each do |item, price|
puts "#{item}: #{price}"
end
类似遍历数组, 针对上例,每次遍历hash,把hash的key赋给item, 把hash的key赋给price, 打印item和price hash排序
puts "Please input: "
text = gets.chomp
words = text.split()
frequencies = Hash.new(0)
words.each do |letter|
frequencies[letter] += 1
end
frequencies = frequencies.sort_by do |word,count|
count
end
12.函数的定义方法
def double(n)
return n * 2
end
def为方法定义关键字, 后面double为方法名,n为参数,return表示函数有返回值, 返回n*2,以end结尾, 方法名和end之间为函数体。
13.语句块blocks的定义方法
blocks可以理解为没有方法名的方法,blocks可以用关键字do...end表示,也可以用{}表示
例如:
1.times do
puts "I'm a code block!"
end 1.times { puts "As am I!" }
14.理解symbol
symbol总是以:开头,后面必须紧跟一个字符或者一个下划线_ puts :foo.object_id 327458
puts :foo.object_id 327458
puts :"foo".object_id 327458 puts "foo".object_id 24303850
puts "foo".object_id 24300010
puts "foo".object_id 24296170 #在 Ruby 中每一个对象都有唯一的对象标识符(Object Identifier),可以通过 object_id 方法来得到一个对象的标识符。
根据上面程序, 可知 symbol和string的区别:
每个 String 对象都是不同的,即便他们包含了相同的字符串内容;而对于 Symbol 对象,一个名字(字符串内容)唯一确定一个 Symbol 对象(即名字相同,则symbol相同)。
哈希表是symbol应用最广泛的地方。
下面这个哈希表表示按城市分类的一些机器的集合。
一个哈希表例子 hosts{
'beijing' => 'machine1',
'shanghai' => 'machine2',
'guangzhou' => 'machine3',
'tianjin' => 'machine4',
'shenzhen' => 'machine5'
}
如果要引用 beijing 的机器,使用 hosts['beijing'] 。但如果我们程序中要频繁引用哈希表中 value ,这样就不大好了,因为 Ruby 对每一次字符串引用都会生成一个 String 对象,累积下来这个开销是相当大的。 我们完全可以使用 Symbol ,因为对于这些 key 来讲,我们用的就是名字而已,例如下面hosts[:beijing]
使用 Symbol 作为 key hosts = {
:beijing => 'machine1',
:shanghai => 'machine2',
:guangzhou => 'machine3',
:tianjin => 'machine4',
:shenzhen => 'machine5'
}
通常来讲,当你面临 String 还是 Symbol 的选择时,可以参考以下标准: 如果使用字符串的内容,这个内容可能会变化,使用 String
如果使用固定的名字或者说是标识符,使用 Symbol
string和symbol之间的转换
:sasquatch.to_s # ==> "sasquatch" (symbol转string)
"sasquatch".to_sym # ==> :sasquatch (string转symbol)
"hello".intern 和 .to_sym效果相同都可以string转symbol
15.hash的新的表示方法
自Ruby1.9之后, hash的语法比原来更为简洁
new_hash = {
one: 1,
two: 2,
three: 3
}
冒号在symbol之后, 不再使用=>
16.Ruby允许单独访问key或value
my_hash = { one: 1, two: 2, three: 3 } my_hash.each_key { |k| print k, " " }
# ==> one two three my_hash.each_value { |v| print v, " " }
# ==> 1 2 3
17.Ruby的隐式返回
Ruby方法总会返回最近的一次表达式所得到的值。
def add(a,b)
return a+b
end
等价于:
def add(a,b)
a+b
end
18. 三目运算符
three = 3
puts three == 3 ? "Of course." : "What?"
# ==> puts "Of course."
Ruby基本语法规则的更多相关文章
- JavaScript:声明变量名的语法规则
一.语法规则 1.变量必须使用字母.下划线(_)或者美元符($)开始. 2.然后可以使用任意多个英文字母.数字.下划线(_)或者美元符($)组成. 3.不能使用JS关键词与保留字. 二.示例 var ...
- JSON 语法规则详解
JSON 的语法规则十分简单,无论用何种方法总结都只有数条而已,它参考了 C 语言家族的一些习惯,学习起来并不会感到陌生. 回顾JSON 的五点语法 1)- 数组(Array)用方括号("[ ...
- JavaScript的语法规则
JavaScript的语法规则 JavaScript区分大小写 JavaScript脚本程序须嵌入在HTML文件中 JavaScript脚本程序中不能包含HTML标记代码 每行写一条脚本语句 语句末尾 ...
- XML 语法规则
转摘自:http://www.w3school.com.cn/xml/xml_elements.asp XML 语法规则 XML 文档包含 XML 元素. XML 的语法规则很简单,且很有逻辑.这些规 ...
- PHPCMS标签:PC标签模板语法规则
模板语法规则1.变量表示{$name} 被解析成 <?=$name?>,表示显示变量$name的值,其中的“name”由英文字母.数字和下划线组成首字母必须是英文字母或者下划线. 2.常量 ...
- C++ 语法规则
C++ 中的布尔类型:布尔类型只占用一个bit ,但是如果连续定义多个布尔类型时,编译器可能会多个布尔类型定义在一起.true 编译器用1来表示.false 编译器用0来表示. 将一个其他类型的数 ...
- Ruby的语法糖
发现Ruby的语法糖好多,比如函数调用,参数列表可以写括号和不写括号.代码块可以用do end 或者 {}. 还有 if,unless后置.等等. 如果看Ruby代码看多了,你会发现,它很多地方的 ...
- Jenkins 定时构建语法规则
1.Jenkins自由风格任务定时构建 2.语法规则 定时构建语法 * * * * * 第一个*表示分钟,取值0~59 第二个*表示小时,取值0~23 第三个*表示一个月的第几天,取值1~31 第四个 ...
- 良好的JavaScript编码风格(语法规则)
编码风格 1.概述 "编程风格"(programming style)指的是编写代码的样式规则.不同的程序员,往往有不同的编程风格. 有人说,编译器的规范叫做"语法规则& ...
随机推荐
- Scala可变长度参数
可变长度参数 Scala 允许你指明函数的最后一个参数可以是重复的.这可以允许客户向函数传入可变长度参数列表.想要标注一个重复参数,在参数的类型之后放一个星号.例如: scala> def ec ...
- hibernate-HQL连接查询
和SQL查询一样,HQL也支持各种各样的连接查询, 如内连接.外连接. 实例: package Test; import static org.junit.Assert.*; import java. ...
- jboss wildfly 外网访问
在standalone.xml中: 找到下面三行,看到是要访问public(8080端口的)和management的interface,将interface中的127.0.0.1改为0.0.0.0即可 ...
- persistent.xml hibernate 利用sql script 自定义生成 table 表
<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http:// ...
- 【项目】Http请求在NSMutableURLRequest添加HttpBody的字典params属性
在请求头中加入字典集合的Body,首先把字典转换成json,然后json转换成NSData,然后加入到HTTPBody中,我有已下写法 // 参数paramsNSDictionary * params ...
- 高可用与负载均衡(1)之linux系统的数据链路层负载均衡
preface 在蓝厂就职到时候,每台缓存服务器都能够跑到2G的流量,这么大的流量,有人会问,服务器是不是安装的万兆网卡,no no no,仅仅是3张千兆网卡绑定在一块.万兆网卡的服务器少见,大多数都 ...
- Javascript中call、apply、bind函数
javascript在函数创建的时候除了自己定义的参数外还会自动新增this和arguments两个参数 javascript中函数也是对象,call.apply.bind函数就是函数中的三个函数,这 ...
- sky
UniSky入门资料 http://game.ceeger.com/forum/read.php?tid=4069
- SPL--Serializable
Serializable[自定义序列化的接口] : 实现此接口的类将不再支持 __sleep() 和 __wakeup(). 作用: 为一些高级的序列化场景提供支持.__sleep()和__wakeu ...
- Java8初体验(二)Stream语法详解
感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 上篇文章Java8初体验(一)lambda表达式语法比 较详细的介绍了lambda表达式的方方面面,细心的读者会发现那篇文章的例 ...