Ruby on Rails 入门之:(11) Ruby中的类方法
在Ruby的类中,添加方法和其他的语言一样,而且方法也可以包含参数,也有返回值,也有默认参数。
Ruby类中的方法的的默认参数和其他任何语言的都一样,默认的函数参数只能从最后的参数开始,不能有间隔。
在类中,使用def 定义一个方法
在Ruby中,定义方法的参数可以不用小括号来标识,如果省略小括号,方法名和参数之间需要用空格分开,调用方法的时候也可以省略括号。
[ruby]
#encoding:gbk
class Animal
def eat(food)
puts "i eat " + food;
end
end
a = Animal.new;
a.eat("rice");
a.eat "choloate";
#encoding:gbk
class Animal
def eat(food)
puts "i eat " + food;
end
end
a = Animal.new;
a.eat("rice");
a.eat "choloate";
我个人一直认为Ruby中这个函数可以有括号可以没有括号的规则有点不爽,感觉怪怪的,可能是写其他的语言的程序写习惯了吧,也可能有它存在的好处,只是我还没有发现。
Ruby代码由表达式构成,每一个表达式都有一个返回值。调用方法的语句也是一个表达式,所有也有返回值。Ruby允许方法返回一个值,任何方法的返回值都是方法最后执行的表达式的结果,如果有return可以使用return语句显示的返回一个返回值。
[ruby]
#encoding:gbk
class Animal
def eat(food)
puts "i eat " + food;
end
def add a,b
return a+b;
end
end
a = Animal.new;
a.eat("rice");
a.eat "choloate";
result = a.add(1,1);
puts result;
result = a.add 1,1;
puts result;
#encoding:gbk
class Animal
def eat(food)
puts "i eat " + food;
end
def add a,b
return a+b;
end
end
a = Animal.new;
a.eat("rice");
a.eat "choloate";
result = a.add(1,1);
puts result;
result = a.add 1,1;
puts result;
Ruby中的特殊方法:
我们可以为一个对象追加一个方法,这个方法只是属于这个具体的对象实例。
[ruby]
#encoding:gbk
class Animal
def eat(food)
puts "i eat " + food;
end
def add a,b
return a+b;
end
end
a = Animal.new;
a.eat("rice");
a.eat "choloate";
result = a.add(1,1);
puts result;
result = a.add 1,1;
puts result;
def a.show
puts "added method to a";
end
a.show;
#encoding:gbk
class Animal
def eat(food)
puts "i eat " + food;
end
def add a,b
return a+b;
end
end
a = Animal.new;
a.eat("rice");
a.eat "choloate";
result = a.add(1,1);
puts result;
result = a.add 1,1;
puts result;
def a.show
puts "added method to a";
end
a.show;
定义类方法
和其他的语言一样,Ruby中也可以定义类方法。
[ruby]
#encoding:gbk
class Animal
def Animal.show
puts "i am class Animal";
end
def eat(food)
puts "i eat " + food;
end
def add a,b
return a+b;
end
end
a = Animal.new;
a.eat("rice");
a.eat "choloate";
result = a.add(1,1);
puts result;
result = a.add 1,1;
puts result;
def a.show
puts "added method to a";
end
a.show;
puts Animal.show;
#encoding:gbk
class Animal
def Animal.show
puts "i am class Animal";
end
def eat(food)
puts "i eat " + food;
end
def add a,b
return a+b;
end
end
a = Animal.new;
a.eat("rice");
a.eat "choloate";
result = a.add(1,1);
puts result;
result = a.add 1,1;
puts result;
def a.show
puts "added method to a";
end
a.show;
puts Animal.show;
类方法不一定要放在类中,他也可以放在类的外部单独生命。不过如果类方法声明在类中,就可以使用self关键字来代替类名。
补充:Web开发 , 其他 ,