有趣的Ruby-学习笔记2

注释

单行注释就是 #

多行注释比较奇怪是 用 = begin 和 =end

#!/usr/bin/ruby -w

puts "Hello, Ruby!"

=begin
这是一个多行注释。
可扩展至任意数量的行。
但 =begin 和 =end 只能出现在第一行和最后一行。
=end

条件判断

if conditional [then]
	  code...
[elsif conditional [then]
	  code...]...
[else
	  code...]
end

if 表达式用于条件执行。值 false 和 nil 为假,其他值都为真。请注意,Ruby 使用 elsif,不是使用 else if 和 elif。

通常我们省略保留字 then 。若想在一行内写出完整的 if 式,则必须以 then 隔开条件式和程式区块。如下所示:

if a == 4 then a = 7 end

实例

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

x=1
if x > 2
   puts "x 大于 2"
elsif x <= 2 and x!=0
   puts "x 是 1"
else
   puts "无法得知 x 的值"
end

Ruby循环

语法

while conditional [do]
   code
end

或者

while conditional [:]
   code
end

语法中 do 或 : 可以省略不写。但若要在一行内写出 while 式,则必须以 do 或 : 隔开条件式或程式区块。
语法

code while condition

或者

begin
  code
end while conditional

until

比较特殊的是 until 语法

until conditional [do]
   code
end

实例

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

$i = 0
$num = 5

until $i > $num  do
   puts("在循环语句中 i = #$i" )
   $i +=1;
end

for

for一般来说是使用率最高的循环方式

for variable [, variable ...] in expression [do]
   code
end

比如

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 0..5
   puts "局部变量的值为 #{i}"
end

还可以这么写

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

(0..5).each do |i|
   puts "局部变量的值为 #{i}"
end

next语句

相当于 continue 语句

redo

可以重新开始循环,不过很容易造成死循环,不知道为什么设计这个语法

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 0..5
   if i < 2 then
      puts "局部变量的值为 #{i}"
      redo
   end
end

这个会产生一个死循环

retry语句

如果 retry 出现在 begin 表达式的 rescue 子句中,则从 begin 主体的开头重新开始。

begin
   do_something   # 抛出的异常
rescue
   # 处理错误
   retry          # 重新从 begin 开始
end

如果 retry 出现在迭代内、块内或者 for 表达式的主体内,则重新开始迭代调用。迭代的参数会重新评估。

for i in 1..5
   retry if some_condition # 重新从 i == 1 开始
end

实例

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 1..5
   retry if  i > 2
   puts "局部变量的值为 #{i}"
end

然后这段又是一个死循环

时间: 2024-08-10 02:10:35

有趣的Ruby-学习笔记2的相关文章

Ruby学习笔记

Ruby学习笔记 Ruby语言中,以对象为基本单位,可以说所有的元素都是对象.按照之前对于面向对象程序的理解,对象是指包含了特定属性和方法集合的一组程序.对象由类来定义,具体的表现为对象实例.也就是说,对象是类的实例化[2]. Ruby语言的基础元素 对象:数值对象.字符串对象.正则表达式对象.时间对象.文件对象.目录对象.数组.哈希.例外对象等 数值对象   由于Ruby中一切数据都是对象,所以我们处理的数字实际上也是对象. a = 10,这样一个简单的赋值语句,实际上应当理解为 a = Nu

ruby学习笔记(1)-puts,p,print的区别

ruby学习笔记-puts,p,print的区别 共同点:都是用来屏幕输出的. 不同点:puts 输出内容后,会自动换行(如果内容参数为空,则仅输出一个换行符号):另外如果内容参数中有转义符,输出时将先处理转义再输出p 基本与puts相同,但不会处理参数中的转义符号print 基本与puts相同,但输出内容后,不会自动在结尾加上换行符 1 2 3 4 5 6 7 s = "aaaa\nbb\tbb" p s p "****************" puts s p

ruby 学习笔记 2 -变量

变量 在ruby的世界里,变量有5种,全局变量 局部变量 实例变量 常量 类变量以及伪变量 常用的: 全局: 在全局使用,使用$开头,因为是全局的,所以在任何的代码例子中都可以改变其值,造成混乱,所以不建议使用. 局部: 在一定范围内有作用.如 i = 10 ,其中i 就是一个局部变量 常量: 例如圆周率Pi,但是Pi 我们可以赋予他其他值,是可以变化的. 常量的首个字母必须大写,当试图改变常量值时,解释器会给出警告“ex4.rb:19: warning: already initialized

ruby 学习笔记 1

写ruby blog  系统的记录下.也是对我学ruby的点滴记录. 先介绍下我的学习环境.系统:ubuntu12.04文档:techotopia ,ruby文档,the hard way learn ruby 以及其他文档记录:有道云笔记 关于ruby 学习ruby 通常会介绍下ruby的历史和发展,但是我觉得这些有的废话, 关于ruby,是一个日本人写出来的,是一门解释性语言 这就够了. 开始 在ubuntu上 ,先判断下是否installed ruby. 1 ruby -v 如果安装了会打

Ruby学习笔记0708

#!/usr/bin/env ruby class MegaGreeter attr_accessor :names # 初始化這個物件 def initialize(names = "World") @names = names end # 向每個人說 hi def say_hi if @names.nil? puts "..." elsif @names.respond_to?("each") # @names 是可以迭代的陣列容器 @nam

ruby学习笔记(2)-chomp,chop的区别

还没开始系统性的学习Ruby,最近在看metasploit框架的exploit会涉及到Ruby脚本,也就硬着头皮一遍查阅资料一遍做些笔记吧. Ruby字符串中存在chop和chomp的内置函数.我在http://www.w3cschool.cc/ruby/ruby-string.html中得到的关于Ruby字符串chop和chomp的用法介绍如下: 单从这几句话,还是有些不明白(貌似借鉴于perl语言中的chop和chomp函数的用法),然后百度了一下,我在http://blog.chinaun

【ruby学习笔记】Hello World

程序员学习任何一门新语言,总是从用新语言写一个Hello World开始的,我们也不例外,先用ruby写一个极简的Hello World. 说极简应该实至名归,因为只有一行代码: <span style="font-family:SimSun;font-size:18px;">puts "Hello, Ruby!";</span> 把上述代码保存到 helloWorld.rb 文件(ruby脚本的后缀是.rb),然后执行 ruby hello

Ruby学习笔记一

最近由于学习Puppet相关知识,所以学习一下ruby方面的知识,下面是对于一些入门的总结. ruby的开始语句与结束语句. BEGIN { code } END{ code } 类中的变量: 局部变量 “_”开头----方法中定义的变量,只能在方法中使用. 实例变量 “@”开头-----实例从对象到对象的改变,可以跨越方法或者实例. 类变量 “@@”开头------可以跨对象使用,属于类,是类的属性 全局变量  “$”开头------跨类使用 使用new 创建对象 对象=类.new 创建带有参

【ruby学习笔记】初探ruby

之前一直对ruby只停留在听说过的状态,最近有一些闲暇的事件,学习一下ruby,为将来的ruby on rails开发做一些准备. ruby由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)创建于1993年.相对于java这样的大而全的开发语言,ruby可以说是小而美的,非常类似于python,通常这样的语言的代码量只有java的五分之一吧,而且学习起来也比较容易,如果有效提高开发速度. ruby有很多优秀的特性,如果要说两个最重要的特点,我想我会选择1.完全面向对象:2

Ruby 学习笔记1

Ruby已死,学习只是为了看redmine源码与理解动态语言..net 这边有F#,Java那边有Groovy Ruby 是脚本语言,所以继承了脚本语言的落点,ruby大小写敏感,常量要求首字母大写 改变常量不会报错,因为只是约定... Ruby方法后面可以不跟着括号,所以看见.名称,别以为就是属性... Ruby 中hash是字典,但是可以定义相同的key,而此时后面的key会覆盖前面的key对应的value,而此时字典中元素的个数不会最会增加,也就是说后面的相同key只是起到了改变value