打印

[标准问题] 帮忙看看这个素数小程序

帮忙看看这个素数小程序

# E3.10-4.rb 求50以内的素数
----------------------------------------------------
for i in 2..50   #50以内
  f=true    #起始假定每个数都是素数
 for p in 2...i  #比自身小的正整数(1和自身除外)
  if i%p==0   #如果能整除
    f=!f    #那么这个数不是素数
   break   #并且跳出这层循环
  end     # if 结束
 end      #内层循环结束
print i," " if f #如果这个数保持起始假定,则打印
end #外层循环结束
----------------------------------------------------
#2 3 5 7 11 13 17 19 23 29 31 37 41 43 47

谁知道这个红色字体部分,的语法怎么解释啊!看了半天看不懂,以前别的语言里也没看过类似的,好难懂!谁帮我看看!谢谢

TOP

!在ruby里就是not,前面定义f=true,那么!f就是false了
后面那个是if修饰句。因为在ruby里任何表达式都返回一个值,而变量f在此时就是一个布尔值。

print i," " if f 


等价于

if f == true
    print i," "
end


Digging ruby with Pickaxe,
Running agilely on rails

TOP

偶!还是对这句有点不懂啊!

print i," " if f
如何等价
if f ==true
 print i," "
end
没看到语法里哪提到可以这样写的啊?我想真正理解一下为啥可以print i," " if f 这样写!

TOP

if修饰句并不是ruby才有的语法
在诸如javascript等脚本语言中早就有实现。
可以当语法生记下来,即:

    
语句 if 条件


等价于

    
if 条件
       
   语句
end


也可以用英语理解,把它当成条件状语从句就是了。比如
We won’t go on a picnic if it rains tomorrow.

[ 本帖最后由 xavier 于 2008-8-12 17:18 编辑 ]
Digging ruby with Pickaxe,
Running agilely on rails

TOP

2008-11-20 23:23 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html) @38.103.63.61