Ruby编程语言学习笔记1

对应Ruby编程语言第一章

#coding:utf-8

#Blocks and Iterators(代码块和迭代器)

#times and upto downto是由Integer实现的迭代器

#times {|i| block }:Iterates block int times, passing in values from zero to int - 1.

puts "#times {|i| block }:"

5.times do |i|

print i, " "

print "\n"

end

3.times{print "Welcome to Ruby ,Jeriffe\n"}

#upto(limit) {|i| block }:Iterates block, passing in integer values from int up to and including limit.

print"\n"

puts "#upto(limit) {|i| block }:"

1.upto(9){|x| print x," "}

print"\n"

#downto(limit) {|i| block }:Iterates block, passing in integer values from int down to and including limit.

print"\n"

puts "#downto(limit) {|i| block }:"

9.downto(1){|x| print x," "}

print"\n"

#数组(及类似的”可枚举的“对象)定义了一个each迭代器

#each {|item| block }:Calls block once for each element in self, passing that element as a parameter.

print"\n"

puts "#each {|item| block }:"

a=[3,2,1]

a.each{|item| print item,' '}

print"\n"

#在each迭代器基础上定义的其他迭代器

print"\n"

puts "#在each迭代器基础上定义的其他迭代器:"

a=[1,2,3,4]

b=a.map{|item| item*item}

print b,"\n"

c=a.select{|item| item%2==0}

print c,"\n"

d=a.inject do|sum,item|

sum+item

end

print d,"\n"

#Methods(方法)

#方法用def关键字来定义,方法的返回值是方法最后一个被执行的表达式

def square(x)

x*x

end

print square(5),"\n"

#Assignment(赋值)

#除传统的=操作符赋值外,Ruby还支持并行赋值:一个表达式中出现多余一个的值和变量

puts" 并行赋值:"

x,y=1,2

print "x=",x,',y=',y,"\n"

x,y=y,x

print "x=",x,',y=',y,"\n"

#方法返回多个值

puts"#方法返回多个值:"

def polar(x,y)

theta=Math.atan2(y,x)

r=Math.hypot(x,y)

[r,theta]

end

distance,angle=polar(2,3)

print "distance=",distance,',angle=',angle,"\n"