Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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私有方法_Ruby_Oop - Fatal编程技术网

调用不同类的公共方法的ruby私有方法

调用不同类的公共方法的ruby私有方法,ruby,oop,Ruby,Oop,允许ruby中类a中的私有方法调用类B中的公共方法被认为是一种好的设计吗 我想更好的方法是在类a中调用另一个public方法,它将调用类B中的public方法 考虑这样一种情况:用户需要对资源采取行动(私有方法),但如果不检查资源的某些约束(通过公共方法),就无法这样做。我不知道您想要的确切函数是什么,但允许ruby中类a中的私有方法调用类B中的公共方法是没有问题的,如代码所示: class A private def test_a B.new.test_b end e

允许ruby中
类a
中的私有方法调用
类B
中的公共方法被认为是一种好的设计吗

我想更好的方法是在
类a
中调用另一个public方法,它将调用
类B
中的public方法


考虑这样一种情况:用户需要对资源采取行动(私有方法),但如果不检查资源的某些约束(通过公共方法),就无法这样做。

我不知道您想要的确切函数是什么,但允许ruby中类a中的私有方法调用类B中的公共方法是没有问题的,如代码所示:

class A private def test_a B.new.test_b end end class B def test_b puts 'test_b' end end A.new.send(:test_a) #=>test_b 甲级 私有的 def测试a 新测试 结束 结束 B类 def测试单元b “测试b” 结束 结束 A.new.send(:test_A)#=>test_b
我不知道您想要的确切函数是什么,但允许ruby中类a中的私有方法调用类B中的公共方法是没有问题的,如下代码所示:

class A private def test_a B.new.test_b end end class B def test_b puts 'test_b' end end A.new.send(:test_a) #=>test_b 甲级 私有的 def测试a 新测试 结束 结束 B类 def测试单元b “测试b” 结束 结束 A.new.send(:test_A)#=>test_b
我认为创建一个公共方法来访问其他类的公共方法不是一个好方法。你会被你班上太多的公共方法弄得不知所措

因为Ruby是纯面向对象的,所有东西都是面向对象的。如果你记住了这种方法,你最终会得到不必要的方法。即使你在用你的私人方法做一些简单的事情。假设您正在尝试使用
每个
方法迭代一个数组。您会考虑创建一个公共方法来首先访问公共方法<代码>类数组的每个< /代码>吗?答案是否定的


ruby也是一种富有表现力和生产力的语言。用ruby编写的代码越少越好。

我认为创建一个公共方法来访问其他类的公共方法不是一个好方法。你会被你班上太多的公共方法弄得不知所措

因为Ruby是纯面向对象的,所有东西都是面向对象的。如果你记住了这种方法,你最终会得到不必要的方法。即使你在用你的私人方法做一些简单的事情。假设您正在尝试使用
每个
方法迭代一个数组。您会考虑创建一个公共方法来首先访问公共方法<代码>类数组的每个< /代码>吗?答案是否定的

ruby也是一种富有表现力和生产力的语言。在ruby中,您可以用更少的代码做更多的事情

允许在中的类a中使用私有方法被认为是一种好的设计吗 ruby调用类B中的公共方法

无论您是从公共方法还是从私有方法调用外部类,这都无关紧要,因为私有方法是一个实现细节。重要的是给定类了解外部类的方法是否有意义

考虑这样一种情况:用户需要对资源采取行动(私有方法),但如果不检查资源的某些约束(通过公共方法),就无法这样做

考虑到你的评论:

如果用户想要进入房子,他需要检查房子是否安全

一种可能的实施方式是:

class User
  def enter(house)
    if house.safe?
      house.users << user
    end
  end
end
现在,这两个类之间的耦合已经减少。作为
safe?
约束的所有者,
House
控制是否允许用户进入,而
User
仍然对
House
的实现一无所知

根据所讨论的领域,安全声明可能属于除
房屋
用户
以外的类别,例如
警卫
。在这种情况下,您可能会得到如下结果:

class Guard
  def facilitate_entry(user, house)
    house.enter_by(user) if safe?(house)
  end

  private

  def safe?(house)
  end
end
允许在中的类a中使用私有方法被认为是一种好的设计吗 ruby调用类B中的公共方法

无论您是从公共方法还是从私有方法调用外部类,这都无关紧要,因为私有方法是一个实现细节。重要的是给定类了解外部类的方法是否有意义

考虑这样一种情况:用户需要对资源采取行动(私有方法),但如果不检查资源的某些约束(通过公共方法),就无法这样做

考虑到你的评论:

如果用户想要进入房子,他需要检查房子是否安全

一种可能的实施方式是:

class User
  def enter(house)
    if house.safe?
      house.users << user
    end
  end
end
现在,这两个类之间的耦合已经减少。作为
safe?
约束的所有者,
House
控制是否允许用户进入,而
User
仍然对
House
的实现一无所知

根据所讨论的领域,安全声明可能属于除
房屋
用户
以外的类别,例如
警卫
。在这种情况下,您可能会得到如下结果:

class Guard
  def facilitate_entry(user, house)
    house.enter_by(user) if safe?(house)
  end

  private

  def safe?(house)
  end
end

什么是层次关系…?tbh目前没有任何关系,它可以是一个
用户
类和一个
房屋
类,如果用户想进入房屋,他需要检查房屋是否安全…我只是大声想举个例子。@Subash你能给出一个实际的例子吗,例如,两个Ruby类(
House
User
)包含有意义的公共和私有方法?什么是层次关系…?tbh目前没有任何关系,它可能类似于
User
类和
House
类,如果用户想进入房子,他需要检查房子是否安全……我只是大声想举个例子。@Subash你能举个实际的例子吗,即两个Ruby类(
house
user
),包含有意义的公共和私有方法?嗨@Tsao,我知道可以这样做,我关心的是好的设计和质量