wlm123 2008-8-12 10:53
帮忙看看这个素数小程序
# E3.10-4.rb 求50以内的素数
----------------------------------------------------
for i in 2..50 #50以内
f=true #起始假定每个数都是素数
for p in 2...i #比自身小的正整数(1和自身除外)
if i%p==0 #如果能整除
[color=Red] f=!f [/color] #那么这个数不是素数
break #并且跳出这层循环
end # if 结束
end #内层循环结束
print i," " [color=Red]if f[/color] #如果这个数保持起始假定,则打印
end #外层循环结束
----------------------------------------------------
#2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
谁知道这个红色字体部分,的语法怎么解释啊!看了半天看不懂,以前别的语言里也没看过类似的,好难懂!谁帮我看看!谢谢
xavier 2008-8-12 11:00
!在ruby里就是not,前面定义f=true,那么!f就是false了
后面那个是if修饰句。因为在ruby里任何表达式都返回一个值,而变量f在此时就是一个布尔值。[code]print i," " if f [/code]等价于[code]if f == true
print i," "
end[/code]
wlm123 2008-8-12 11:12
偶!还是对这句有点不懂啊!
print i," " if f
如何等价
if f ==true
print i," "
end
没看到语法里哪提到可以这样写的啊?我想真正理解一下为啥可以print i," " if f 这样写!:Q
xavier 2008-8-12 17:15
if修饰句并不是ruby才有的语法
在诸如javascript等脚本语言中早就有实现。
可以当语法生记下来,即:[code]
语句 if 条件[/code]等价于[code]
if 条件
语句
end[/code]也可以用英语理解,把它当成条件状语从句就是了。比如
We won’t go on a picnic if it rains tomorrow.
[[i] 本帖最后由 xavier 于 2008-8-12 17:18 编辑 [/i]]