Ruby on rails Ruby中object.method(a,b)和method(a,b)的区别是什么

Ruby on rails Ruby中object.method(a,b)和method(a,b)的区别是什么,ruby-on-rails,ruby,methods,arguments,Ruby On Rails,Ruby,Methods,Arguments,我对编程非常陌生,正在努力学习Ruby。我现在还不能完全理解这些方法。我明白: 方法允许我在不重写代码块的情况下执行代码块,这种方法如下所示: example_method 参数允许我将值传递到方法中的代码中,这些值代替方法中定义的占位符。这样我就可以用不同的输入执行一组代码。带有参数的方法如下所示: example_method( x , y ) 但我对对象上方法的实例化实际上在做什么感到困惑。例如: object.example_method( x, y ) 这是什么意思?为什么方法附

我对编程非常陌生,正在努力学习Ruby。我现在还不能完全理解这些方法。我明白:

方法允许我在不重写代码块的情况下执行代码块,这种方法如下所示:

example_method
参数允许我将值传递到方法中的代码中,这些值代替方法中定义的占位符。这样我就可以用不同的输入执行一组代码。带有参数的方法如下所示:

example_method( x , y )
但我对对象上方法的实例化实际上在做什么感到困惑。例如:

object.example_method( x, y )
这是什么意思?为什么方法附加到带有句点符号的对象上?我们这样做是为了在方法中引用对象的实例/类变量?还有其他理由这样做吗

例如,如果:

def example_method(x , y)
  x * y
end
对象。示例方法(a,b)
是否与
示例方法(a,b)
相同


谢谢你的帮助,如果我不清楚的话,很抱歉。

如果我正确地假设了你要问的是类方法还是实例方法

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
Ruby是一种语言。这意味着对象不仅有成员(=状态),还有方法(=行为)。在对象上调用方法时(在这种情况下,对象被称为调用者),运行的方法是与该对象的类型行为相对应的方法

当您在没有调用方的情况下调用方法时,
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"

请记住编辑您的帖子并正确设置代码的格式。感谢您的回复,更重要的是我不理解在对象上调用的方法和在对象上不调用的方法之间的区别。@Cu1ture:总是在对象上调用方法。如果您没有明确指定接收者,那么接收者是隐式的
self
。谢谢!这是开始点击现在。如果调用者没有本地作用域方法,那么它会继承全局作用域方法吗?@Cu1ture尝试调用对象类型中不存在的对象上的方法将导致
未定义的方法
错误感谢回复,当在没有调用方的情况下调用一个方法时,程序的全部内容是否被视为该方法调用的对象?@Cu1ture-这取决于调用它的位置。如果您是从一个对象(在它的一个方法中)中调用它,那么对象本身被认为是调用者。如果在全局作用域本身上调用它,那么是的,全局作用域本身被认为是一个对象。这很有意义!谢谢你,你真的帮我解决了这个问题。现在来尝试并理解类方法:)