#
############################################
# True and False
# Ruby中只有false和nil是FALSE的,其他情况下都是TRUE
#############################################
#
# ruby predefines the globals false and nil.
# both of these values are treated as being false in a boolean context
# all other values are treated as being true.
#
unless
nil
puts
"
nil is false
"
end
unless
false
puts
"
false is false
"
end
if
0
puts
"
0 is true
"
end

#
############################################
# And, Or, Not, Defined?
# and &&
# and和&&是短路的。
# or ||
# or和||是短路的。
# ! not
#############################################
exp1
=
true
exp2
=
false
if
exp1 and exp2
puts
"
exp2 will eval!
"
end
if
exp2 and exp1
puts
"
exp1 will not eval!
"
end 
if
exp1 or exp2
puts
"
exp2 will not eval!
"
end
if
exp2 or exp1
puts
"
exp1 will eval!
"
end
if
!
exp2
puts
"
exp2 is false
"
end

#
############################################
# defined?
# 一个对象或者变量是否定义。
#############################################
name
=
"
mazhao
"

if
defined
?
name
puts
"
name is defined
"
end
unless
defined
?
email
puts
"
email is not defined
"
end

#
############################################
# Comparison Operators
# ==(!=), ===, <=>, <, <=, >, >=, =~(!~)
#############################################
val1
=
1
val2
=
2

if
val1
!=
val2
puts
"
#{val1} != val2
"
end
if
"
mary
"
===
"
mary
"
puts
"
mary is mary
"
end
puts
"
val1 <=> val2 : #{val1 <=> val2}
"

if
val1
<
val2
puts
"
#{val1} < #{val2}
"
end

if
'
Learnning Ruby
'
=~
/
Ruby
/
puts
"
Learnning Ruby contains Ruby!
"
end 
if
'
Learnning Ruby
'
!~
/
Java
/
puts
"
Learnning Ruby doesn't contain Java
"
end
#
############################################
# ? expression
# boolean_expression ? exp1 : exp2
#############################################
puts
1
<
2
?
"
1 less than 2
"
:
"
1 larger or equal than 2
"


#
############################################
# case expression
# case
# when
#############################################
factor
=
90

case factor
when
0
..
59
puts
"
F
"
when
60
..
69
puts
"
D
"
when
70
..
79
puts
"
C
"
when
80
..
89
puts
"
B
"
when
90
..
100
puts
"
A
"
end
#
############################################
# LOOP
# while
# until
# for in
# each
# loop do
#
#############################################

# while
while
line
=
gets
break
if
line
.
eql
?
(
"
break
"
)
puts
"
>
"
+
line
end

#
until
i
=
0
until
i
>
10
puts i
i
+=
1
end
#
for in
for
i in
0
..
10
puts i
end
#
for in
puts
"
i in an array
"
a
=
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
0
]
for
i in a
puts i
end

#
each
a
=
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
0
]
a
.
each
do
|
i
|
puts i
end

#
time
puts
"
times loop
"
10
.
times
do
|
i
|
puts i
end

#
upto
puts
"
upto to loop
"
0
.
upto(
10
)
do
|
i
|
puts i
end

#
loop do
puts
"
loop do
"
j
=
0
loop
do
puts j
j
+=
1
break
if
j
>=
10
end
#
############################################
# break, redo, next, retry
# break
# redo
# next
# retry
#############################################
puts
"
test break
"
for
i in [
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
0
]
puts i
break
if
i
==
5
end
puts
"
test redo
"
for
i in [
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
0
]
puts i
if
i
==
5
i
=
6
redo
end
end
puts
"
test retry
"
for
i in [
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
0
]
print
"
Now at #{i}, Restart?
"
retry
if
gets
=~
/^
y
/
i
end

puts
"
test next
"
for
i in [
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
0
]
next
if
i
%
2
==
0
puts i
end


31

被折叠的 条评论
为什么被折叠?



