标签: let

阻塞封装与本地封装 - 让

当我的数据与一个独立于其参数的函数相关时,我何时应该优先使用块封装而不是局部封装?

我什么时候应该使用:

(let [hello "Hello "]
  (defn do-greet
    "Print a greeting."
    [name]
    (println (str hello name))))
Run Code Online (Sandbox Code Playgroud)

与:

(defn do-greet
  "Print a greeting."
  [name]
  (let [hello "Hello "]
    (println (str hello name))))
Run Code Online (Sandbox Code Playgroud)

clojure let

6
推荐指数
2
解决办法
165
查看次数

难以区分Rspec的'let'与'let!'

我已经阅读了rspec文档,并搜索过其他一些地方,但我很难掌握Rspec let和Rspec之间的区别.let!

我已经读过,let在需要之前它没有被初始化,并且它的值仅在每个示例中被缓存.我还读过,let!强制变量立即存在,并强制调用每个例子.我想因为我是新手,所以我很难看到这与下面的例子有什么关系.为什么:m1需要设置let!为assert m1.content存在于页面上,但:user可以设置let为断言该页面包含text: user.name

  subject { page }

  describe "profile page" do
    let(:user) { FactoryGirl.create(:user) }
    let!(:m1) { FactoryGirl.create(:micropost, user: user, content: "Foo") }
    let!(:m2) { FactoryGirl.create(:micropost, user: user, content: "Bar") }

    before { visit user_path(user) }

    it { should have_selector('h1',    text: user.name) }
    it { should have_selector('title', text: user.name) }

    describe "microposts" do
      it { should have_content(m1.content) }
      it …
Run Code Online (Sandbox Code Playgroud)

rspec let

6
推荐指数
1
解决办法
3327
查看次数

Clojure让vs Common Lisp让

在Common Lisp中,let使用绑定列表,即:

(let ((var1 1)
      (var2 2))
  ...)
Run Code Online (Sandbox Code Playgroud)

虽然Clojure使用向量代替:

(let [a 1
      b 2]
  ...)
Run Code Online (Sandbox Code Playgroud)

除了可读性之外,Clojure使用向量是否有任何具体原因?

lisp clojure common-lisp let

6
推荐指数
1
解决办法
671
查看次数

JavaScript执行顺序:为什么这个条件执行后面的代码呢?

if(true) {
    let m = "yo";

    console.log(m);
}

console.log(m)
Run Code Online (Sandbox Code Playgroud)

输出:

ReferenceError: m is not defined
yo
Run Code Online (Sandbox Code Playgroud)

所以第4行的代码正在第8行的代码之后执行.

我的用法let与此有关吗?

编辑:阅读评论后,我意识到这可能是因为我的运行时.这是我每晚在Firefox中看到它的方式:

火狐夜间让米

编辑2:如果这确实只是我的运行时,那么生产代码有什么影响,因为这样的事情?跨浏览器的行为不一致?我该如何防范呢?

javascript firefox let ecmascript-6 firefox-developer-tools

6
推荐指数
1
解决办法
93
查看次数

循环中的 let 语句在 IE 中无法按预期工作

我正在尝试 ECMAScript 6 中的一些示例。与其他浏览器相比,它的工作方式不同。这true在 Firefox 中返回,但false在 IE 中返回。为什么这在 Internet Explorer 中的工作方式不同?

let callbacks = []
for (let i = 0; i <= 2; i++) {
  callbacks[i] = function () { console.log(i); return i * 2 }
}
console.log(callbacks[0]() === 0);
console.log(callbacks[1]() === 2);
console.log(callbacks[2]() === 4);
Run Code Online (Sandbox Code Playgroud)

javascript internet-explorer let ecmascript-6

6
推荐指数
1
解决办法
4549
查看次数

处理当前目标中的 let-in 表达式

我在围绕statemonad做一些 coq 证明时卡住了。具体来说,我已经将情况简化为这个证明:

Definition my_call {A B C} (f : A -> B * C) (a : A) : B * C :=
  let (b, c) := f a in (b, c).

Lemma mycall_is_call : forall {A B C} (f : A -> B * C) (a : A), my_call f a = f a.
Proof.
  intros A B C f a.
  unfold my_call.
  (* stuck! *)
Abort.
Run Code Online (Sandbox Code Playgroud)

调用后的结果目标unfold(let (b, c) := f a in …

let coq

6
推荐指数
1
解决办法
1071
查看次数

'number' 永远不会被重新分配。改用'const'。(首选常量)

为什么在这种情况下 eslint 4.17.0 我的错误号永远不会被重新分配。改用'const'。(首选常量)。为什么我需要使用const?请解释我我无法理解。

let test = {
    'number': 1,
    'string': 'asd',
};
test.number = 99;

console.log(test.number);
// output: 99
Run Code Online (Sandbox Code Playgroud)

脚本

 {
    "parser": "babel-eslint",
    "env": {
        "browser": true
    },
    "extends": [
        "google"
    ],
    "rules": {
        "prefer-const": 2

    },
    "parserOptions": {
        "ecmaVersion": 6,
        "sourceType": "module"
    }
}
Run Code Online (Sandbox Code Playgroud)

eslint 问题

[eslint] 'test' is never reassigned. Use 'const' insted. (prefer-const)
Run Code Online (Sandbox Code Playgroud)

javascript constants let eslintrc

6
推荐指数
1
解决办法
2万
查看次数

带有块作用域变量的 Safari 错误?

我正在测试是否可以使用块作用域来替换 IIFE 以通过闭包创建“私有”变量。它一直运行良好,直到在 Safari 11.0.3 (11604.5.6.1.1) 中进行测试,该版本支持块作用域,但存在块和闭包的错误,例如:

{
  let i = 0;
  function getNext() {
    return i++;
  }
}
// Chrome and Firefox
console.log(getNext()); // 0
console.log(getNext()); // 1
// Safari
console.log(getNext()); // ReferenceError: Can't find variable: i
Run Code Online (Sandbox Code Playgroud)

除了继续使用 IIFE 之外,还有其他解决方法吗?或者 Safari 是否正确而其他人都有错误?

附注。在严格模式下,getNext也没有在块外定义。

javascript safari closures scope let

6
推荐指数
0
解决办法
718
查看次数

在Elm的绑定中是否容易陷入困境?

我有两个功能A和B,可以同时禁用,启用A,启用B,但不能同时启用.看完" 让不可能的国家变得不可能"后,我想尝试在类型级别上强制执行此操作.

我正在考虑的解决方案的简化版本如下.

module Main exposing (main)

import Browser
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)

type Model
  = NoneEnabled
  | AEnabled
  | BEnabled

init : Model
init = NoneEnabled

type Msg
  = EnableA
  | DisableA
  | EnableB
  | DisableB

view : Model -> Html Msg
view model =
  let -- Buttons to enable and disable features
      buttons =
        div [] [ button [onClick EnableA] [text "Enable A"]
               , button [onClick DisableA] [text "Disable A"] …
Run Code Online (Sandbox Code Playgroud)

lazy-evaluation let elm

6
推荐指数
1
解决办法
117
查看次数

为什么 Node.js 通常使用“var”而不是“let”?

基本上我在 Node.js 上看过的每个教程,甚至 express 生成器都使用var而不是let? 从我在 Javascript.info 中学到的知识let应该是标准的,除非是非常小众的情况。

javascript var let node.js

6
推荐指数
1
解决办法
1444
查看次数