我是编程新手,我正在努力学习Ruby。我现在无法理解各种方法。我理解:
方法允许我执行一大块代码而不必重写它,这样的方法如下:
example_method
参数允许我将值传递给方法中的代码,该代码位于方法中定义的占位符的位置。这样我就可以用不同的输入执行一组代码。带参数的方法如下:
example_method( x , y )
但我对一个对象的方法实例化实际上在做什么很困惑。例如:
object.example_method( x, y )
这是什么意思?为什么方法附加到具有句点符号的对象?我们是否这样做,以便我们可以在方法中引用对象的实例 / 类变量?有没有其他理由这样做?
例如:
def example_method(x , y)
x * y
end
object.exaple_method(a , b)
是否与example_method(a , b)
相同?
感谢您的帮助,对不起,如果我不清楚的话。
答案 0 :(得分:2)
Ruby是一种Object Oriented语言。这意味着对象不仅具有成员(= state),还具有方法(=行为)。当您在对象上调用方法时(对象称为调用者),运行的方法是与此对象的类型行为相对应的方法强>
当您调用没有调用者的方法时,self
隐式地是调用者。从irb,self
被视为main
或全球范围。
示例:
def my_method(a)
"#{a} from main"
end
class A
def my_method(a)
"#{a} from A"
end
end
class B
def my_method(a)
"#{a} from B"
end
end
a = A.new
b = B.new
my_method(1)
# => "1 from main"
a.my_method(1)
# => "1 from A"
b.my_method(1)
# => "1 from B"
答案 1 :(得分:0)
如果我正确地假设您要求它的类方法与实例方法
def Object
def self.example_method(x, y)
#this is a class method
x * y
end
def example_method(x,y)
#this is an instance method
x * y
end
end
所以现在我们已经在这里定义了他们如何称呼他们
#This called the class method
Object.example_method(3,3) => 9
#To call the instance method we have to have an instance
object = Object.new
object.example_method(3,3) => 9