Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 类中ruby函数类型的语法_Ruby On Rails_Ruby_Ruby On Rails 3_Ruby On Rails 3.1 - Fatal编程技术网

Ruby on rails 类中ruby函数类型的语法

Ruby on rails 类中ruby函数类型的语法,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,如果我有一个Ruby类: class Person def get_person end protected def check_person_1 end def check_person_2 end private def auth_person_1 end def auth_person_2 end end auth\u person\u 2aprivate功能还是public或protected功能?我的意思是,我在函数名上

如果我有一个Ruby类:

class Person
  def get_person

  end

  protected
  def check_person_1

  end
  def check_person_2

  end

  private
  def auth_person_1

  end
  def auth_person_2

  end

end

auth\u person\u 2
aprivate功能还是publicprotected功能?我的意思是,我在函数名上方没有“private”关键字,但它位于
auth\u person\u 1
函数下,而该函数直接位于“private”下,在这种情况下,什么函数类型是
auth\u person\u 2
?那么函数如何呢?在这种情况下,auth\u person1/2是私有的,check\u person1/2是受保护的,get\u person是公共的

函数查找最后一个关键字,这就是它们使用的关键字

您也可以这样做:

class Person
def method1
end
def method2
end
def method3
end
def method4
end

public :method1, :method4
protected :method2
private :method3

end
这样做也会奏效:

class Person
def method
end

private
def method1
end

public
def method2
end
end
您可以按任意顺序使用它们,并多次使用相同的关键字。

Ruby不像C#,您必须为每个方法定义封装

在调用其他方法(private、public或protected)之前,方法“private”下面的所有内容都是私有的。例如,可以使用“public”在私有方法块之后定义公共方法

默认情况下,您的类是公共的

class Hello
  ...
end

class Hello
  public
  ...
end

轻微更正:函数不“查找最后一个关键字”<代码>私有,
受保护
是来自
内核
模块的方法。这些方法设置了访问范围。它们不是函数,而是方法。
private
不是一个关键字,它是一种方法,就像Ruby中的其他方法一样。直到某个第三方库作者想出了一个非常聪明的想法,即monkey patching
private
。这是一个有趣的错误追踪。。。不