在 Ruby 中,我们有两种方法来获取/设置实例变量 -instance_variable_get和instance_variable_set. 此外,在某些情况下,记住实例变量是一种很好的做法:
@foo ||= 'bar'
Run Code Online (Sandbox Code Playgroud)
因此,我尝试将这 2 个功能结合起来,因为我需要动态实例变量名称:
iv = :@foo
instance_variable_set(iv, 'bar') unless instance_variable_get(iv)
Run Code Online (Sandbox Code Playgroud)
我不确定,但是有没有更优雅的方式来写这个?
在以下示例中,向元类添加方法非常有效.
class Test(object):
def __init__(self, x):
self.x = x
def double(self):
return self.x*2
# method to add
def quadruple(self):
return self.x*4
# creating metaclass
TypeTest = type('TypeTest', (Test,), {'triple': triple,
'quadruple': quadruple})
# prints 8
TypeTest(2).quadruple()
Run Code Online (Sandbox Code Playgroud)
以下示例不起作用,我不知道为什么.它只是在解析的函数中无法识别self并且发生TypeError.
class Vehicle(object):
def __init__(self, wheels, door=False):
self.wheels = wheels
self.door = door
# method to add
def check_load(self, x):
if x > self.load:
return "Load won't fit"
else:
return "Load will fit"
# creating metaclass
Truck = type('Truck', (Vehicle,), dict(wheels=4,door=True, load=100,
check_load=check_load))
# …Run Code Online (Sandbox Code Playgroud) 根据编译器体系结构,使C++函数或结构,类(使用元编程)确定有符号和无符号类型的最大值.一个用于签名,另一个用于无符号数字.
要求:
澄清:
评论后,我很惊讶,对非典型的C++问题的反应.我已经知道强调这个问题很好,这个问题不是家庭作业,也不是来自月球,但它是实用的领域.
对于所有感兴趣的应用这些东西...首先:它不是功课:).这是基于我所面临的实际问题的实用,可回答的问题 - 如SO.FAQ所建议的那样.感谢您提供有关climits等的提示,但我正在寻找"智能代码".当然climits,limits经过良好测试和良好的代码片段,但它们是巨大的,不一定"聪明,棘手".我们正在寻找智能解决方案(不是"巨大的任何"解决方案),不是吗?即使你,climits建议也没关系,作为起点.对于那些对区域感兴趣的人,其中包括头文件是不允许的,并且源代码的大小是相关的,很少有:编译器的实验,程序转换,为编程竞赛准备问题集等.实际上它们的树与问题有关I我目前正在努力.所以我不认为(SO.FAQ)过于本地化,我认为,对于(SO.FAQ)爱好者程序员来说,这是肯定的问题.如果您认为即使所有这些,这个问题都有问题,请告诉我 - 我不想再犯错误.如果没关系,请告诉我,我能做些什么来不让它失败?
我有这个数组:
const arr = [
{ 'Some text': this.f('a') },
{ 'Some other text': this.f('b') }
]
Run Code Online (Sandbox Code Playgroud)
为了实现这一目标,我编写了实验代码。
arr.forEach((entry) => {
console.log(Object.entries(entry));
})
Run Code Online (Sandbox Code Playgroud)
结果它执行了我的功能:
[[ 'Some text': 'result_f1' ]]
[[ 'Some other text': 'result_f2' ]]
Run Code Online (Sandbox Code Playgroud)
我的函数自动执行了。
但我不认为这是实现这一目标的最安全方法。我想更明确地分别执行每个函数并尝试捕获每个函数。
我想这样做的原因是将每个函数包装到一个单独的try-catch块中,因为在数组中进行尝试捕获会破坏代码的可读性
有什么想法如何实现这一目标吗?
architecture ×1
arrays ×1
c++ ×1
function ×1
javascript ×1
metaclass ×1
python ×1
ruby ×1
self ×1
try-catch ×1