我怎样才能在一个命名空间下访问每个 Faker 方法:
any.sentence
any.name
... other methods from Faker::xxx classes
而不是写:
Faker::Lorem.sentence
Faker::Name.name
...
我正在使用 RSpec 和 Rails。
我怎样才能在一个命名空间下访问每个 Faker 方法:
any.sentence
any.name
... other methods from Faker::xxx classes
而不是写:
Faker::Lorem.sentence
Faker::Name.name
...
我正在使用 RSpec 和 Rails。
为了做到这一点,你可以定义你的变量any
,它等于你想调用的命名空间类:
lorem = Faker::Lorem
lorem.sentence
#=> "Dignissimos eos qui doloribus quaerat sequi est corrupti error."
name = Faker::Name
name.name
#=> "Dr. Percival Ernser"
但是,请将此视为一种技巧,而不是您应该在代码中执行的操作。事实上,当有人读你的代码(或几个月后读你的代码)时,看到Faker::Namespace
就会很明显。另一方面,阅读name.name
会导致混乱,因为您必须寻找它的定义才能理解它的作用。命名空间有存在的理由,不应被覆盖以节省一些击键。希望这能回答你的问题!
编辑:您评论“将所有命名空间统一为一个”。这是不可能的(至少对于Faker
)。实际上,不同的方法具有相同的名称,但在不同的命名空间中。例如,在和Faker
中都有方法的实现(产生不同的结果)。name
Faker::Name
Faker::Company
因此,统一命名空间是不可能的,因为它会导致丢失一些方法。