浏览 2026 次
锁定老帖子 主题:Ruby 学习笔记[1]有疑问
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-14
最后修改:2009-04-27
puts"演示while not" a=1 while not a>10 print a," " a+=1; end puts for i in 1...10 print i," " end puts puts"演示break" c='a' for i in 1..4 if i==2 and c=='a' c='b' print"\n" break end print i,c,"" end puts "\n\n" puts puts"演示next" c='a' for i in 1..4 if i==2 and c=='a' c='b' print "\n" next end print i,c," " end puts puts"演示redo" c='a' for i in 1..4 if i==2 and c=='a' c='b' print "\n" redo end print i,c," " end puts "\n\n" puts"演示retry" c='a' for i in 1..4 if i==2 and c=='a' c='b' print "\n" retry end print i,c," " end puts "\n\n" puts "演示50以内的素数" for i in 2..50 f=true for p in 2...i if i%p==0 f=!f break end end print i," " if f end puts puts"演示times,upto,downto,each,step" puts 4.times{print "Hi!"} puts 1.upto(9){|i| print i if i<7} puts 9.downto(1){|i| print i if i<7} puts (1...9).each{|i| print i if i<7} puts 0.step(11,3){|i| print i} puts
# E3.12-1.rb 求50以内的素数 $arr=[ ] #建立一个全局数组 $arr $arr[0]=2 def add_prime(n) #定义方法 将 n以内的奇素数加入$arr 3.step(n,2){|num|$arr <<num if is_prime?num } end def is_prime?(number) #定义方法 判断一个数是否是素数 j=0 #数组下标 while $arr[j] * $arr[j] <=number return false if number % $arr[j] ==0 j +=1 end return true end add_prime(50) print $arr.join(", "),"\n" #转换成字符串输出 上面代码中我有点不太明白,为什么在return false后面没有换行?换行后,下面在加一个end,结果就不一样了,结果为(2,3)。。。请大家赐教 # E3.12-1.rb 求50以内的素数 $arr=[ ] #建立一个全局数组 $arr $arr[0]=2 def add_prime(n) #定义方法 将 n以内的奇素数加入$arr 3.step(n,2){|num|$arr <<num if is_prime?num } end def is_prime?(number) #定义方法 判断一个数是否是素数 j=0 #数组下标 while $arr[j] * $arr[j] <=number return false if number % $arr[j] ==0 j +=1 end end return true end add_prime(50) print $arr.join(", "),"\n" #转换成字符串输出
把end再换一个位置,结果就成(2) # E3.12-1.rb 求50以内的素数 $arr=[ ] #建立一个全局数组 $arr $arr[0]=2 def add_prime(n) #定义方法 将 n以内的奇素数加入$arr 3.step(n,2){|num|$arr <<num if is_prime?num } end def is_prime?(number) #定义方法 判断一个数是否是素数 j=0 #数组下标 while $arr[j] * $arr[j] <=number return false if number % $arr[j] ==0 j +=1 end return true end end add_prime(50) print $arr.join(", "),"\n" #转换成字符串输出 主要是不理解,为什么return false 后面为什么if没有换行? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-04-15
最后修改:2009-04-15
return false 后面if没有换行是这样的:
正常if语句是: if number % $arr[j] ==0 #do something end 这里是用了一个ruby习惯用法,被称为if语句修饰符(statement modifier) eg: flag=true puts "Hello World!" if flag 所以你上面的代码如果要改,可以改成这样: # E3.12-1.rb 求50以内的素数 $arr=[ ] #建立一个全局数组 $arr $arr[0]=2 def add_prime(n) #定义方法 将 n以内的奇素数加入$arr 3.step(n,2){|num|$arr <<num if is_prime?num } end def is_prime?(number) #定义方法 判断一个数是否是素数 j=0 #数组下标 while $arr[j] * $arr[j] <=number if number % $arr[j] ==0 return false end j +=1 end return true end add_prime(50) print $arr.join(", "),"\n" #转换成字符串输出 |
|
返回顶楼 | |
发表时间:2009-04-15
头像很漂亮....
|
|
返回顶楼 | |
发表时间:2009-04-18
Hooopo 写道 return false 后面if没有换行是这样的: 正常if语句是: Java代码 if number % $arr[j] ==0 #do something end if number % $arr[j] ==0 #do something end这里是用了一个ruby习惯用法,被称为if语句修饰符(statement modifier) eg: Java代码 flag=true puts "Hello World!" if flag flag=true puts "Hello World!" if flag所以你上面的代码如果要改,可以改成这样: Java代码 # E3.12-1.rb 求50以内的素数 $arr=[ ] #建立一个全局数组 $arr $arr[0]=2 def add_prime(n) #定义方法 将 n以内的奇素数加入$arr 3.step(n,2){|num|$arr <<num if is_prime?num } end def is_prime?(number) #定义方法 判断一个数是否是素数 j=0 #数组下标 while $arr[j] * $arr[j] <=number if number % $arr[j] ==0 return false end j +=1 end return true end add_prime(50) print $arr.join(", "),"\n" #转换成字符串输出 # E3.12-1.rb 求50以内的素数 $arr=[ ] #建立一个全局数组 $arr $arr[0]=2 def add_prime(n) #定义方法 将 n以内的奇素数加入$arr 3.step(n,2){|num|$arr <<num if is_prime?num } end def is_prime?(number) #定义方法 判断一个数是否是素数 j=0 #数组下标 while $arr[j] * $arr[j] <=number if number % $arr[j] ==0 return false end j +=1 end return true end add_prime(50) print $arr.join(", "),"\n" #转换成字符串输出 谢谢大虾昂!懂什么意思了。嘿嘿!!!解释的简单明了! |
|
返回顶楼 | |