如何在一个名称空间中访问每个Faker方法:
any.sentence
any.name
... other methods from Faker::xxx classes而不是写:
Faker::Lorem.sentence
Faker::Name.name
...我正在使用RSpec和Rails。
发布于 2013-08-03 11:21:11
为此,可以定义变量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在Faker::Name和Faker::Company中都有方法name的实现(这会产生不同的结果)。
因此,统一名称空间是不可能的,因为它会导致一些方法的松动。
https://stackoverflow.com/questions/18027285
复制相似问题