Tag:

如何在Rails中实例化名称string中的类?

我们如何在Ruby-on-Rails中从它的名字string中实例化类? 例如,我们在数据库中以“ClassName”或“my_super_class_name”的格式命名。 我们如何从中创build对象? 解: 正在找我自己,但没有find,所以在这里。 Ruby-on-Rails API方法 name = "ClassName" instance = name.constantize.new 它甚至可以不格式化,我们可以用户string方法.classify name = "my_super_class" instance = name.classify.constantize.new 当然也许这不是'Rails的方式',但它解决了它的目的。

C ++ 11允许对非静态和非常量成员进行类内初始化。 什么改变了?

在C ++ 11之前,我们只能对整型或枚举types的静态常量成员进行类内初始化。 Stroustrup在他的C ++ FAQ中讨论了这个问题 ,举例如下: class Y { const int c3 = 7; // error: not static static int c4 = 7; // error: not const static const float c5 = 7; // error: not integral }; 以下推理: 那么为什么这些不便的限制存在? 一个类通常在头文件中声明,而头文件通常包含在许多翻译单元中。 但是,为了避免复杂的链接器规则,C ++要求每个对象都有唯一的定义。 如果C ++允许将需要作为对象存储在内存中的实体的类定义中断,那么该规则将被破坏。 但是,C ++ 11放宽了这些限制,允许非静态成员的类内初始化(§12.6.2/ 8): 在非委托构造函数中,如果给定的非静态数据成员或基类不是由mem-initializer-id指定的(包括由于构造函数没有ctor初始值设定项而没有mem-initializer-list的情况)而实体不是抽象类(10.4)的虚拟基类 如果实体是一个非静态数据成员,它具有一个括号或等于初始值设定项 ,则该实体按照8.5中的规定进行初始化; 否则,如果实体是变体成员(9.5),则不执行初始化; 否则,实体将被默认初始化(8.5)。 […]

何时在PHP中使用类与函数

电灯泡还没有继续这个… 我真的很喜欢一个容易理解的解释,使用一个类的function在PHP的优势。 下面是我现在想的一个简单例子,我想知道一个类是否更有效率: 假设我有一个使用php构build的迷你日历小部件。 我正在考虑调用函数miniCal('arrayVars1', 'var2') 。 但是我可能会在这个页面上做两次。 通过在这里使用一个类来使用更less的资源,创build新的实例? 我应该在这里叫什么树,因为我现在觉得这棵树是一堵砖墙。

如何获得给定的装饰器的Python类的所有方法

如何获得用@ decorator2装饰的给定类A的所有方法? class A(): def method_a(self): pass @decorator1 def method_b(self, b): pass @decorator2 def method_c(self, t=5): pass

类名的dynamic类定义

如何在Ruby中dynamic定义一个类名称? 我知道如何dynamic创build一个没有名字的类,像这样: dynamic_class = Class.new do def method1 end end 但是你不能指定一个类名。 我想用名字dynamic创build一个类。 这是我想要做的一个例子,当然它实际上并不工作。 (请注意,我不是创build一个类的实例,而是一个类的定义) class TestEval def method1 puts "name: #{self.name}" end end class_name = "TestEval" dummy = eval("#{class_name}") puts "dummy: #{dummy}" dynamic_name = "TestEval2" class_string = """ class #{dynamic_name} def method1 end end """ dummy2 = eval(class_string) puts "dummy2: #{dummy2}" # doesn't work 实际产出: […]

斯卡拉的密封抽象类与抽象类

sealed abstract和abstract Scala类有什么区别?

什么是java pojo类,java bean,普通类?

可能重复: DTO,VO,POJO,JavaBeans之间的区别? 嗨,请不要说我的问题是重复的:-)我看到所有的问题,但不明白确切的区别。 有人可以用简单的语言来解释什么是POJO , Bean , Normal Class 。

我如何检查一个类是否被定义?

如何将string转换为类名,但只有当该类已经存在? 如果琥珀已经是一个类,我可以通过以下方式从一个string中获得: Object.const_get("Amber") 或(在Rails中) "Amber".constantize 但是其中的任何一个都会因为NameError: uninitialized constant Amber而失败NameError: uninitialized constant Amber如果琥珀色还不是一个类,那么就是NameError: uninitialized constant Amber 。 我的第一个想法是使用defined? 方法,但它不区分已经存在的类和不存在的类: >> defined?("Object".constantize) => "method" >> defined?("AClassNameThatCouldNotPossiblyExist".constantize) => "method" 那么在我尝试转换它之前,如何testing一个string是否可以命名一个类呢? (好吧,如何begin / rescue块赶上NameError错误?太丑了?我同意…)

Ruby的疯狂:类与对象?

我刚开始玩JRuby。 这是我的第一个rubypost。 我很难理解Ruby中的类和对象。 它并不意味着像其他面向对象的语言中的类和对象。 举一个例子 Class.is_a? Object 返回true和 Object.is_a? Object 也是 。 所以class&Object都是对象 这里是另一个 Class.is_a? Class 返回true和 Object.is_a? Class 也是 。 等等,我还没有完成 Object.instance_of? Class Class.instance_of? Class 两者都是事实 Object.instance_of? Object Class.instance_of? Object 两者都是假的。 对,没有什么可以是对象的实例。 和 Class.kind_of? Class Object.kind_of? Class 两者都是真实的 Class.kind_of? Object Object.kind_of? Object 两者都是真实的 所以两者是完全一样的,那为什么我们有这两个呢? 经过一些挖掘,我写了这个简单的方法返回两个支持的方法列表 irb(main):054:0> def print_methods(obj) irb(main):055:1> obj.methods.each do |mm| irb(main):056:2* puts […]

课后申报括号后的半冒号

提前道歉可能是一个愚蠢的问题,但在C + +类,为什么在分号后的分号? 我经常忘记它,并得到编译器错误,从而失去了时间。 对我来说似乎有点多余,这是不太可能的。 人们是否真的这样做 class MyClass { . . . } MyInstance; 编辑:我从C兼容的angular度来看它的结构和枚举,但由于类不是C语言的一部分,我猜它主要是在类似的声明结构之间保持一致。 我一直在寻找更多的devise原理,而不是能够改变任何东西,尽pipe一个好的代码完成IDE可能会在编译之前对其进行修改。