earlier和before都有之前的意思?有啥区别吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了earlier和before都有之前的意思?有啥区别吗相关的知识,希望对你有一定的参考价值。
earlier和before都有之前的意思,但有一定的区别,具体如下:
1、具体含义不同
earlier表示比当前更早的某一时间,早些时候。before除了表示时间上的之前,还可以表示空间上的在...前面。
2、用法不同
earlier是early的比较级,在句中只能作定语修饰名词或作状语修饰动词。before则常用于修饰动词或引导时间状语从句。
例句:
Earlier reports of gunshots have not been substantiated.
早先关于枪击的报道还没有被证实。
Before Gallacher could catch up with the ball, Nadlovu had beaten him to it.
在加拉赫能接住球之前,纳德洛夫就已经比他先接到了。
扩展资料
词汇解析:
1、earlier
英文发音:['ɝlɪr]
中文释义:adv. 早地,早些时候地
例句:
As mentioned earlier, the university supplements this information with an interview.
正如早些时候提到的,该大学用一次采访来补充这个资料。
2、before
英文发音: [bɪ'fɔː]
中文释义:conj. 在……以前;到……为止;以免,不然
例句:
He spent his early life in Sri Lanka before moving to Canada.
移居加拿大前,他早年生活在斯里兰卡。
参考技术A earlier是early的比较级,因此用来表示“比当前更早的某一时间”“早些时候”。其词性为形容词或副词,因此在句中只能作定语修饰名词或作状语修饰动词。before除了表示时间上的之前,还可以表示空间上的在...前面。此外,before的词性为介词或连词,因此除了句意,其用法也和earlier有本质的区别。在多数情况下,before和earlier都不可以互换。
e.g. He finished his homework 30 minutes before/earlier. 此处before和earlier可以互换。
I should have come earlier/before. 此处earlier和before都没有语法问题,但earlier表示“我本该早点来的”而before表示“我本该以前来的”,因此句意有区别,不可互换。
He came before me. 此处before为连词,不可用earlier。如果用earlier,应该为He came earlier than I did.
Insert an emphasis mark before this word. 此处before为连词,而且是表示空间性,因此不可用earlier。
He read his manuscript before the audience. 此处before为介词,不可用earlier。
He told us to be here at 9 a.m. but we arrived 20 minutes earlier. 此处earlier是形容词词性,作定语,修饰省略掉的后半句than what he had told us,因此不可用before替换。 参考技术B ealier-刚刚 没多久之前
before以前.
ealier 相比before时间比较短
i met him ealier 我刚刚才碰到他
i met him before 我以前碰到过他本回答被提问者和网友采纳
RSpec:let 和 before 块有啥区别?
【中文标题】RSpec:let 和 before 块有啥区别?【英文标题】:RSpec: What is the difference between let and a before block?RSpec:let 和 before 块有什么区别? 【发布时间】:2011-08-23 21:07:24 【问题描述】:let
和 RSpec 中的 before
块有什么区别?
什么时候使用它们?
下面的例子中什么是好的方法(让或之前)?
let(:user) User.make !
let(:account) user.account.make!
before(:each) do
@user = User.make!
@account = @user.account.make!
end
我研究了这个*** post
但是像上面那样为关联的东西定义 let 好不好?
【问题讨论】:
基本上,'let' 被不喜欢实例变量的人使用。附带说明一下,您应该考虑使用 FactoryGirl 或类似工具。 【参考方案1】:人们似乎已经解释了它们不同的一些基本方式,但忽略了before(:all)
,并且没有准确解释为什么应该使用它们。
我认为实例变量在绝大多数规范中都没有使用,部分原因是this answer 中提到的原因,所以我不会在这里提及它们。
让块
let
块中的代码仅在引用时执行,延迟加载意味着这些块的顺序无关紧要。这为您提供了强大的功能,可以通过您的规范减少重复设置。
一个(非常小的和做作的)例子是:
let(:person) build(:person)
subject(:result) Library.calculate_awesome(person, has_moustache)
context 'with a moustache' do
let(:has_moustache) true
its(:awesome?) should be_true
end
context 'without a moustache' do
let(:has_moustache) false
its(:awesome?) should be_false
end
您可以看到has_moustache
在每种情况下的定义都不同,但无需重复subject
的定义。需要注意的重要一点是,将使用当前上下文中定义的最后一个 let
块。这对于设置用于大多数规范的默认值很有用,如果需要,可以将其覆盖。
例如,检查 calculate_awesome
的返回值是否传递了 person
模型并将 top_hat
设置为 true,但没有小胡子:
context 'without a moustache but with a top hat' do
let(:has_moustache) false
let(:person) build(:person, top_hat: true)
its(:awesome?) should be_true
end
关于 let 块的另一点需要注意的是,如果您正在搜索已保存到数据库中的内容(即Library.find_awesome_people(search_criteria)
),则不应使用它们,因为除非它们已经被保存到数据库中,否则它们不会被保存到数据库中。参考。 let!
或 before
块是这里应该使用的。
另外,永远不要永远使用before
来触发let
块的执行,这就是let!
的用途!
让!块
let!
块按照它们定义的顺序执行(很像之前的块)。与 before 块的一个核心区别是您获得了对该变量的显式引用,而不是需要回退到实例变量。
与let
块一样,如果使用相同名称定义了多个let!
块,则将在执行中使用最新的块。核心区别在于 let!
块这样使用会被执行多次,而 let
块只会执行最后一次。
before(:each) 块
before(:each)
是块前的默认值,因此可以引用为before
,而不是每次都指定完整的before(:each)
。
在一些核心情况下使用before
块是我个人的偏好。如果出现以下情况,我将使用 before 块:
before get :index
)。尽管在很多情况下您可以为此使用 subject
,但如果您不需要参考,有时会感觉更明确。
如果您发现自己正在为您的规范编写大型 before
块,请检查您的工厂并确保您完全了解特征及其灵活性。
before(:all) 块
这些只会在当前上下文(及其子项)中的规范之前执行一次。如果编写正确,这些可以发挥很大的优势,因为在某些情况下,这可以减少执行和工作量。
一个例子(几乎不会影响执行时间)是模拟一个 ENV 变量进行测试,你应该只需要做一次。
希望有帮助:)
【讨论】:
对于 minitest 用户,我是,但我没有注意到这个 Q&A 的 RSpec 标签,before(:all)
选项在 Minitest 中不存在。以下是 cmets 中的一些解决方法:github.com/seattlerb/minitest/issues/61
引用的文章是死链接:\
谢谢@DylanPierce。我找不到那篇文章的任何副本,所以我引用了一个 SO 答案来解决这个问题:)
谢谢 :) 非常感谢
its
不再在 rspec-core 中。一种更现代、更惯用的方式是it is_expected.to be_awesome
。【参考方案2】:
几乎总是,我更喜欢let
。您链接的帖子指定let
也更快。但是,有时当需要执行许多命令时,我可以使用before(:each)
,因为当涉及到许多命令时,它的语法会更加清晰。
在您的示例中,我肯定更喜欢使用let
而不是before(:each)
。一般来说,当只是完成一些变量初始化时,我倾向于使用let
。
【讨论】:
【参考方案3】:没有提到的一个很大的不同是,用let
定义的变量在您第一次调用它之前不会被实例化。因此,虽然before(:each)
块将实例化所有变量,let
让您定义一些可能在多个测试中使用的变量,但它不会自动实例化它们。在不知道这一点的情况下,如果您期望预先加载所有数据,您的测试可能会重新陷入困境。在某些情况下,您甚至可能想要定义多个 let
变量,然后使用 before(:each)
块来调用每个 let
实例,以确保开始时数据可用。
【讨论】:
您可以使用let!
定义在每个示例之前调用的方法。见RSpec docs。【参考方案4】:
看起来您正在使用机械师。请注意,您可能会看到 make 的一些问题!在全局夹具事务之外发生的 let(非爆炸版本)内部(如果您也使用事务夹具)因此破坏了其他测试的数据。
【讨论】:
以上是关于earlier和before都有之前的意思?有啥区别吗的主要内容,如果未能解决你的问题,请参考以下文章
Java 中 给一个object 赋值属性, 既可以用构造函数的方式,也可以用setXXXX()的方式,而它们之间有啥区
jQuery中append(),prepend()与after(),before()的区别
xcode运行项目报error: Illegal Configuration: Compiling IB documents for earlier than iOS 7