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中有可能交换出几乎相同的类吗? 类父类 惩罚! 结束 结束 班级妈妈你不能做的是将对象的实例从一个类转换到另一个类。这就是我想要的。该死!它与大多数面向对象的设计模式背道而驰。如果您需要的话,有一些方法可以使对象在创建后进行专门化并采取新的行为,或者您可以编写一个Dad.to\u mom方法,该方法会发出相同的mom版本。您需要的是一个mom和Dad都从中继承的父类。然后,任何期望父对象的对象都将接受妈妈或爸爸。请参阅:多态性…@AndyJones,这无助于将对象从一种类型切换到另一种类型。@tadman——好吧,是的,关键是你不会将对象从类型A切换到类型B。你设计的系统将可交换地接受类型A或B。如果你能做到这一点,你会得到与将A切换到B相同的功能。。。_Ruby_Class_Inheritance_Metaprogramming - Fatal编程技术网

在Ruby中有可能交换出几乎相同的类吗? 类父类 惩罚! 结束 结束 班级妈妈你不能做的是将对象的实例从一个类转换到另一个类。这就是我想要的。该死!它与大多数面向对象的设计模式背道而驰。如果您需要的话,有一些方法可以使对象在创建后进行专门化并采取新的行为,或者您可以编写一个Dad.to\u mom方法,该方法会发出相同的mom版本。您需要的是一个mom和Dad都从中继承的父类。然后,任何期望父对象的对象都将接受妈妈或爸爸。请参阅:多态性…@AndyJones,这无助于将对象从一种类型切换到另一种类型。@tadman——好吧,是的,关键是你不会将对象从类型A切换到类型B。你设计的系统将可交换地接受类型A或B。如果你能做到这一点,你会得到与将A切换到B相同的功能。。。

在Ruby中有可能交换出几乎相同的类吗? 类父类 惩罚! 结束 结束 班级妈妈你不能做的是将对象的实例从一个类转换到另一个类。这就是我想要的。该死!它与大多数面向对象的设计模式背道而驰。如果您需要的话,有一些方法可以使对象在创建后进行专门化并采取新的行为,或者您可以编写一个Dad.to\u mom方法,该方法会发出相同的mom版本。您需要的是一个mom和Dad都从中继承的父类。然后,任何期望父对象的对象都将接受妈妈或爸爸。请参阅:多态性…@AndyJones,这无助于将对象从一种类型切换到另一种类型。@tadman——好吧,是的,关键是你不会将对象从类型A切换到类型B。你设计的系统将可交换地接受类型A或B。如果你能做到这一点,你会得到与将A切换到B相同的功能。。。,ruby,class,inheritance,metaprogramming,Ruby,Class,Inheritance,Metaprogramming,如果我有一个Dad的实例,但想让它成为Mom的实例,那么在Ruby中可以这样做吗 如果“交换”是指变量上下文中的替换: class Parent def punish! end end class Mom < Parent end class Dad < Parent end 您可以随时重新分配变量。您不能将对象的实例从一个类转换到另一个类。一旦创建,它基本上就被困在那个类中 此处的相同原则适用于对象属性和可能保存对象引用的其他位置。如果“交换”是指变量上下文中的替换: c

如果我有一个
Dad
的实例,但想让它成为
Mom
的实例,那么在Ruby中可以这样做吗

如果“交换”是指变量上下文中的替换:

class Parent
 def punish!
 end
end

class Mom < Parent
end

class Dad < Parent
end
您可以随时重新分配变量。您不能将对象的实例从一个类转换到另一个类。一旦创建,它基本上就被困在那个类中

此处的相同原则适用于对象属性和可能保存对象引用的其他位置。

如果“交换”是指变量上下文中的替换:

class Parent
 def punish!
 end
end

class Mom < Parent
end

class Dad < Parent
end
您可以随时重新分配变量。您不能将对象的实例从一个类转换到另一个类。一旦创建,它基本上就被困在那个类中


同样的原则也适用于对象属性和其他可能保存对象引用的位置。

为什么不可能?@13aal,因为妈妈和爸爸可能有自己的方法和属性集。妈妈是怎么变成爸爸的?当你换掉的时候?你到底是什么意思?你的意思是如果你有一个母亲的对象,你能对它做点什么,让它成为父亲吗?我们这样想。你有一对父母都是父母,所以在编程中他们都是从父类继承的。如果你担心这个问题,你可以从父类继承一个类,并称之为
MomAndDad
或其他什么?为什么不可能呢?@13aal因为妈妈和爸爸可能有自己的方法和属性集。妈妈是怎么变成爸爸的?当你换掉的时候?你到底是什么意思?你的意思是如果你有一个母亲的对象,你能对它做点什么,让它成为父亲吗?我们这样想。你有一对父母都是父母,所以在编程中他们都是从父类继承的。如果您担心这个问题,您可以将一个类从父类继承,并将其称为
MomAndDad
或其他什么?>您不能做的是将对象实例从一个类转换为另一个类。这就是我想要的。该死!它与大多数面向对象的设计模式背道而驰。如果您需要的话,有一些方法可以使对象在创建后进行专门化并采取新的行为,或者您可以编写一个
Dad.to\u mom
方法,该方法会发出相同的mom版本。您需要的是一个mom和Dad都从中继承的父类。然后,任何期望父对象的对象都将接受妈妈或爸爸。请参阅:多态性…@AndyJones,这无助于将对象从一种类型切换到另一种类型。@tadman——好吧,是的,关键是你不会将对象从类型A切换到类型B。你设计的系统将可交换地接受类型A或B。如果你能做到这一点,你将获得与将A切换到B相同的功能。>你不能做的是将对象的实例从一个类转换到另一个类。这就是我想要的。该死!它与大多数面向对象的设计模式背道而驰。如果您需要的话,有一些方法可以使对象在创建后进行专门化并采取新的行为,或者您可以编写一个
Dad.to\u mom
方法,该方法会发出相同的mom版本。您需要的是一个mom和Dad都从中继承的父类。然后,任何期望父对象的对象都将接受妈妈或爸爸。请参阅:多态性…@AndyJones,这无助于将对象从一种类型切换到另一种类型。@tadman——好吧,是的,关键是你不会将对象从类型A切换到类型B。你设计的系统将可交换地接受类型A或B。如果你能做到这一点,你会得到与将A切换到B相同的功能。。。