Ruby语言基础学习五:Ruby 方法、块

#-*-coding:UTF-8 -*-

#Ruby方法
def test(a1="Ruby",a2="Perl") #设置默认参数,也可不设
	puts a1
	puts a2
end

test "C","C++" #加参数,不用括号
test #直接不用参数

# Ruby 中的每个方法默认都会返回一个值。这个返回的值是最后一个语句的值。
def test2
	i=100
	k="Is me"
end

j=test2
puts j

 # Ruby 中的 return 语句用于从 Ruby 方法中返回一个或多个值。
 def test3
 	i=1
 	j=2
 	k=3
 	return i,j,k
 end

 var=test3
 puts var

 # Ruby 允许您声明参数数量可变的方法。
 def sample(*niu) #可变参数个数
 	puts "参数个数为 #{niu.length}" #niu.length求总数
 	for i in 0...niu.length #这里面三个点在开始是0的地方很有用
 		puts "参数值为 #{niu[i]}" #可以用索引引用
 	end
 end

sample "Zara", "6", "F"
sample "Mac", "36", "M", "MCA"

# 当方法定义在类的外部,方法默认标记为 private。另一方面,如果方法定义在类中的,则默认标记为 public。
class Accounts
	def reading_charge #这个必须先实例化再引用
		puts "first"
	end
	def Accounts.return_data #这个算和类常量一样的东西
		puts "Second"
	end
end

Accounts.return_data

# Ruby alias 语句
# 这个语句用于为方法或全局变量起别名。别名不能在方法主体内定义。
# 为编号的全局变量($1, $2,...)起别名是被禁止的。重写内置的全局变量可能会导致严重的问题。
def bar
end
alias foo bar #为 bar 定义了别名为 foo
alias $MATCH $& 

# Ruby undef 语句
# 这个语句用于取消方法定义。undef 不能出现在方法主体内。
undef bar

# 块由大量的代码组成。可以增加代码复用
# 块总是从与其具有相同名称的函数调用。这意味着如果您的块名称为 test,那么您要使用函数 test 来调用这个块。
# 您可以使用 yield 语句来调用块。

# 传递带有参数的 yield 语句可以传递多个参数
def test5
	yield 5,5
	puts "在test方法内"
	yield 100 #这里一个参数居然还能不报错
end
test5 do
	|i,j| puts "你在块#{i} #{j}内"
end


#这些竟然可以不调用自己执行,我加了test4调用会报错
def test4
	puts "在 test 方法内 "
	yield #调用,把什么东西喊出来
	puts "你又回到了 test方法内"
	yield #这个程序喊了两次
end

test4{puts "我回来啦"}
#调用

# 但是如果方法的最后一个参数前带有 &,那么您可以向该方法传递一个块,且这个块可被赋给最后一个参数。如果 * 和 & 同时出现在参数列表中,& 应放在后面。
def test6 (&block)
	block.call #可以用这个调用块
end
test6{puts "hello world!"}

# 每个 Ruby 源文件可以声明当文件被加载时要运行的代码块(BEGIN 块),以及程序完成执行后要运行的代码块(END 块)。
BEGIN{
	puts "BEGIN 代码块"
}
END{
	puts "END代码块"
}
puts "MAIN 代码块"
# 一个程序可以包含多个 BEGIN 和 END 块。BEGIN 块按照它们出现的顺序执行。END 块按照它们出现的相反顺序执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值