Ruby Struct允许使用一组访问器生成实例:
# Create a structure named by its constant
Customer = Struct.new(:name, :address) #=> Customer
Customer.new("Dave", "123 Main") #=> #<Customer name="Dave", address="123 Main">
Run Code Online (Sandbox Code Playgroud)
这看起来既方便又强大,但Hash做了类似的事情:
Customer = {:name => "Dave", :address => "123 Main"}
Run Code Online (Sandbox Code Playgroud)
什么是真实世界的情况,我应该更喜欢结构(和为什么),以及选择一个在另一个上的警告或陷阱是什么?
我试图更好地理解Vuex中的"上下文"对象是什么.
所述上下文对象在Vuex文档中提及无数次.例如,在https://vuex.vuejs.org/en/actions.html中,我们有:
操作处理程序接收一个上下文对象,该对象在商店实例上公开同一组方法/属性,因此您可以调用context.commit来提交变异...
我理解如何使用它,并且我们可以使用解构,如果我们只想使用来自上下文对象的"提交",但希望更深入一点,这样我就能更好地理解发生了什么.
首先,我在"上下文对象"上发现了一对~8.5岁的帖子作为模式: 什么是上下文对象设计模式?并且 你能解释一下背景下设计模式?
但是,特别是Vuex,我希望更好地理解:
谢谢!
有时,方法的kwargs数量会增加到我认为应该重构的水平.
例:
def foo(important=False, debug=False, dry_run=False, ...):
....
sub_foo(important=imporant, debug=debug, dry_run=dry_run, ...)
Run Code Online (Sandbox Code Playgroud)
我目前的首选解决方案
class Args(object):
...
def foo(args):
sub_foo(args)
Run Code Online (Sandbox Code Playgroud)
第一个问题:如何打电话Args?有一个众所周知的描述或设计模式?
第二个问题:Python是否有我可以用作基类的东西Args?
更新
我从13年开始每天使用Python工作.我使用了许多kwargs的方法,并用许多kwargs编写了方法.在过去的几周里,读了一本书"干净的代码",我喜欢它.不知怎的,就像现在戴着另一副眼镜一样.我的旧代码有效,但看起来并不好.将长方法拆分成几种较小的方法很容易.但我不知道如何处理kwargs-bloat的方法.