在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、循环结构 1. for…in语句: Ruby提供的for...in语句主要用于迭代数组和Hash对象中的元素,与其它语言的for 语句有一定的差距,语法格式: for val in Array | Hash | Range [do] #code End ---------------------------------------------------- 迭代数组: for i in ['one','two','three'] do puts i end 迭代Hash对象: h = {1=>'aaa',2=>'bbb'} for i in h puts i[0] .to_s + “ : ” +i[1].to_s end
OR for key,value in h #指定多个循环变量 puts key.to_s + ": "+ value.to_s end ------------------------------------------------------ 另外,在Ruby中除了可以用for…in来迭代数组和Hash对象外,还可以用each方法来进行迭代: ['one','two','three'].each do |x| puts x end ---------------------------------------- {1=>'aaa',2=>'bbb'}.each do |a,b| puts a.to_s + ": " +b.to_s end Note: 1. 使用for…in语句时,每次只能取出一个数组元素,而不能一次取出多个。 2. 当for循环的代码全在一行上时不能省略掉do,否则会报错; 只有当for循环的代码在多行上时才可以省略掉do; 2. Blocks: 在Ruby中有两种定义块的方法:do…end 和{…} #do…end [‘ |a,b,c| Puts(‘#{a},#{b},#{c}’) end # 大括号 {..} [[1,2,3],[3,4,5],[6,7,8]].each{ |a,b,c| puts( "#{a}, #{b}, #{c}" ) } Note: 不管我们用哪种方式定义一个块,我们都必须确保’do’或’{’要和each关键字放在同一行上,否则会出现语法错误 3. While语句: 这个和其它语言差别不大,没什么好说的,语法格式如下: while condition [do] #code end or code while condition
在这要提一下的是上面的第二种定义,代码会先执行一次然后在进行判断。如果我们想用这种方式执行很多句代码,可以把它们放在begin和end之间: begin code1 code2 end while condition
Note: 当一个块被在begin和end之间时(如上),那么这段代码到少会执行一次,其它格式定义的while循环里面的代码可能执行0或多次; x=100 begin puts("x=#{x}") end while(x<100) #output:x=100 puts ("-------------------") y=100 puts("y=#{y}") while(y<100) #无输出 4. until语句 until语句与while语句作用正好相反,当条件表达式返回结果为假时执行循环体,直到 条件表达式为true为止,语法格式: until condition [do] #code end unitl语句的功能完全可以由wihle语句来实现,大多数其它语言中也没有until语句,感觉用起来容易出错,本人还是喜欢用while;
5. Loop 语句 这是Ruby中提供的一个内建的最基本的迭代器,它可以执行循环功能,它会对指定代 码进行无限次的循环,除非使用break语句跳出循环,语法格式: loop{ #code } Or loop do #code end 二、选择结构 1. If…Then…Else/If…:…then(可以用冒号代替Then) if x == 1 then puts( 'ok' ) end # with 'then' if x == 1 : puts( 'ok' ) end # with colon if x == 1 puts( 'ok' ) end # syntax error!代码在一行时不能省略then
2. And…Or…Not/&&…||…! Ruby中有两种方式来判定一个布尔表达式的值是true/false,但是这两种操作符不是完 全等价的,比如他们的计算优先级别就不一样,&&/||/!的优先级别要高些,所以一般用的时候尽量不要将这两种操作符混合起来用; if 1==2 and 2==3 or (||)3==3 puts('hello') end Or if 1==2 && 2==3 || 3==3 puts('world') end 3. Unless 该语句与if语句作用正好相反,当条件表达式返回结果为假时,计算then关键字后的代 码片段,与if语句不同的是,unless语句中不能使用elsif语句,因些不能处理多分支的程序流程,语法格式如下: unless condition [then] #code1 [else #code2 ] end
4. Case Statements 在Ruby中,将case关键字后表达式的值与各个常量进行比较时,使用的是”===”比较运算符,这就是说when关键安后的常量可以是一个Range对象, 此时只要case后的表达式的值在Range内,就可以执行相应的when后的代码片段了; 语法格式: case [表达式] [when 常量1 [,常量2] [,常量] then #code1 ] [when 常量1 [,常量2] [,常量] then #code2 ] [else #code3 ] end 在case语句中,将case关键字后的表达式的值依次与when后的多个常量进行比较,一但相等,则执行对应的when语句块中的代码片段; case(i) when 1: puts(“It’s Monday”) when 2: puts(“It’s Tuesday”) when 3: puts(“It’s Wednesday”) when 4: puts(“It’s Thursday”) when 5: puts(“It’s Friday”) when (6..7): puts(“It’s the weekend!”) else puts(“error”) end OR case(i) when 1 puts(“It’s Monday”) when 2 puts(“It’s Tuesday”) when 3 puts(“It’s Wednesday”) when 4 puts(“It’s Thursday”) when 5 puts(“It’s Friday”) when (6..7) puts(“It’s the weekend!”) else puts(“error”) end 另外,当匹配成功后我们不需要为输入break语句来退出case语句,在Ruby中,一量匹配成功,case语句会自动跳出。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论