#-*-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 块按照它们出现的相反顺序执行。
Ruby语言基础学习五:Ruby 方法、块
最新推荐文章于 2021-06-09 10:37:40 发布