gpt4 book ai didi

variables - 什么时候使用实例变量比使用let()更有优势?

转载 作者:行者123 更新时间:2023-12-02 23:51:24 25 4
gpt4 key购买 nike

似乎有很多人支持使用 let()在 rspec 中初始化变量。在哪些情况下需要使用实例变量(即 @name)?

最佳答案

出于以下几个原因,我总是更喜欢 let 而不是实例变量:

  • 实例变量在被引用时就存在意味着如果您在实例变量拼写中犯了任何错误,那么作为新的实例变量,它肯定会导致一些问题被初始化为零。但是如果你在 let 中你会得到 NameError拼写错误。

  • 此外,您还将初始化之前的实例变量block,这意味着before block 将在每次执行时执行即使该规范不使用这些实例变量,规范也会运行你已经初始化了。下面给出的示例;

    before do
    @user = Factory :user
    @movie = Factory :movie
    end

    it "should have user" do
    @user.should eq User.first
    end

    it "should have movie" do
    @movie.should eq Movie.first
    end

虽然所有规范都运行良好,但第一个规范中没有使用 @movie,第二个规范中也没有使用 @user

您还可以使用 let 和 bang "!"let!, let 是惰性求值的,如果不调用它就永远不会被实例化,使用 let 定义 memoized helper ,而 let! 在每次方法调用之前都会被强制求值。

关于variables - 什么时候使用实例变量比使用let()更有优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14116613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com