59得票1回答
有状态的元编程是否不规范(目前)?

我最喜欢/恶毒的发明之一是constexpr counter,也称为有状态元编程。正如帖子中提到的那样,它似乎在C++14下是合法的,我想知道在C++17下是否有任何变化? 以下是基于该帖子的实现。 template <int N> struct flag { frie...

58得票2回答
`respond_to?`与`respond_to_missing?`的区别

定义 respond_to_missing? 与定义 respond_to? 相比有什么意义?如果重新定义某个类的 respond_to?,会出现什么问题?

55得票6回答
移除/取消定义一个类方法

您可以像这样为类动态定义一个类方法:class Foo end bar = %q{def bar() "bar!" end} Foo.instance_eval(bar) 但如何做相反的操作:删除/取消定义一个类方法?我怀疑Module的remove_method和undef_method方...

55得票8回答
Javascript有类似Ruby的method_missing特性吗?

在Ruby中,我认为您可以调用未定义的方法,同时捕获调用的方法名称,并在运行时处理此方法。 JavaScript能做同样的事情吗?

55得票5回答
Ruby中未定义的变量

假设我正在使用irb,并键入a = 5。如何删除a的定义,以便键入a会返回NameError? 一些背景信息:稍后我想要执行以下操作: context = Proc.new{}.binding context.eval 'a = 5' context.eval 'undef a' # t...

53得票4回答
安全的提取属性名称的方法

我正在寻找一种方法,可以通过类型检查获取对象属性名称,以便在重构后捕获可能的回归。 以下是一个示例:组件需要将属性名称作为字符串传递,如果我尝试更改模型中的属性名称,它将会被破坏。interface User { name: string; email: string; } c...

53得票2回答
在Python类中将函数作为属性访问

我遇到了一个情况,非常有用(尽管不是绝对必要)需要将类的实例方法作为属性访问。(这是用于 API 的,使用 getattr 设置一些返回值为字典并且我不想弄乱这个整洁的小东西) 我记得曾经读过有关 @attribute 装饰器的东西,但我找不到这个装饰器(在 Python 或 Django ...

53得票6回答
Python中动态/运行时方法创建(代码生成)

我需要在运行时生成一个方法的代码。重要的是能够运行任意代码并具有文档字符串。 我想到了一个解决方案,结合使用exec和setattr,以下是一个示例:class Viking(object): def __init__(self): code = ''' ...

52得票3回答
线程安全:Ruby中的类变量

在Ruby中,对类变量进行读写操作是不安全的。对实例变量进行读写操作似乎是安全的。那么,在类或元类对象的实例变量上执行读写操作是否安全呢? 在线程安全方面,以下三个(编造的)示例有什么区别? 示例1:互斥锁class BestUser # (singleton class) @@ins...

51得票4回答
标签分派与部分特化类上的静态方法

假设我想编写一个通用函数void f<T>(),如果T是POD类型,则执行一件事,如果T是非POD类型(或任何其他任意谓词),则执行另一件事。 实现这个的一种方法是使用标签分发模式,就像标准库在迭代器类别中所使用的那样。 template <bool> struct...