标签: let

为什么这个F#函数需要括号?

为什么read_rest_of_csv下面需要括号?

    let read_rest_of_csv() =
        csv_data.Add(csv_fileH.ReadFields()) |> ignore
        not csv_fileH.EndOfData

    while read_rest_of_csv() do ignore None
Run Code Online (Sandbox Code Playgroud)

如果没有括号,循环将不会终止.

open System
open System.Threading
open System.Collections.Generic
open System.Linq
open System.Text
open System.Threading.Tasks
open System.IO
open Microsoft.VisualBasic.FileIO

[<EntryPoint>]
let main argv =
    let csv_fileH = new TextFieldParser("test1.csv")
    csv_fileH.TextFieldType = FieldType.Delimited |> ignore
    let x = csv_fileH.SetDelimiters(",")
    let csv_data = new List<string[]>()

    let eod = csv_fileH.EndOfData
    if not eod then
        let column_headings = csv_fileH.ReadFields()
        csv_data.Add(column_headings) |> ignore

        let read_rest_of_csv =
            csv_data.Add(csv_fileH.ReadFields()) |> ignore
            not csv_fileH.EndOfData …
Run Code Online (Sandbox Code Playgroud)

f# functional-programming let

8
推荐指数
2
解决办法
1167
查看次数

普通口齿不清的地方政府

Common Lisp中的新手问题:

如何使我的过程每次调用时都返回具有自己的本地绑定的不同过程对象?当前,我使用let创建本地状态,但是两个函数调用共享相同的本地状态。这是代码,

(defun make-acc ()
  (let ((balance 100))
    (defun withdraw (amount)
      (setf balance (- balance amount))
      (print balance))
    (defun deposit (amount)
      (setf balance (+ balance amount))
      (print balance))
    (lambda (m)
      (cond ((equal m 'withdraw)
              (lambda (x) (withdraw x)))
            ((equal m 'deposit)
              (lambda (x) (deposit x)))))))

;; test

(setf peter-acc (make-acc))

(setf paul-acc (make-acc))

(funcall (funcall peter-acc 'withdraw) 10)
;; Give 90

(funcall (funcall paul-acc 'withdraw) 10)
;; Expect 90 but give 80
Run Code Online (Sandbox Code Playgroud)

我应该用其他方式吗?我的写作方式有误吗?有人可以帮我解决这个疑问吗?提前致谢。

lisp state common-lisp let

8
推荐指数
3
解决办法
86
查看次数

里面的递归让函数

我很困惑如何def和让绑定变量不同.有人可以向我解释为什么这样有效:

(def leven  
  (memoize (fn [x y]
  (cond (empty? x) (count y)
      (empty? y) (count x)
       :else (min (+ (leven (rest x) y) 1)
                  (+ (leven x (rest y)) 1)
                  (+ (leven (rest x) (rest y)) (if (= (first x) (first y)) 0 1))
              )
  )))
)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将函数声明为无法编译时:

(def leven  
    (let [l (memoize (fn [x y]
    (cond (empty? x) (count y)
          (empty? y) (count x)
           :else (min (+ (l (rest x) y) 1)
                      (+ (l x (rest y)) 1)
                      (+ …
Run Code Online (Sandbox Code Playgroud)

recursion clojure let

7
推荐指数
2
解决办法
1283
查看次数

方案让声明

在作为函数式编程语言的方案中,没有赋值语句.但在一份let声明中

(let ((x 2))
    (+ x 3))
Run Code Online (Sandbox Code Playgroud)

您要分配2x,为什么不这样违反,有函数式编程没有赋值语句的原则?

scheme functional-programming let

7
推荐指数
1
解决办法
7607
查看次数

Haskell是否允许let表达多个模式匹配?

假设我有一个函数可以进行一些计算,有几种模式; 以模式匹配的形式实现.

大多数这些模式(以及其他不同的东西)对参数进行处理,我在let表达式中使用中间变量.但我发现let在许多模式上使用相同的方法确实是多余的,我想知道是否有一种方法可以let为多种模式定义?

这是我复制的一个例子let:

data MyType a = Something a | Another Int [a]

myFunc (Something x) = -- return something, this isn't the point here
myFunc (Another 0 xs) =
    let intermediary = some $ treatment xs
    in doSthg intermediary 1 
myFunc (Another 1 (x:xs)) =
    let intermediary = some $ treatment xs
    in doSthg1 intermediary 1 x
myFunc (Another 2 (x:x':xs)) =
    let intermediary = some $ treatment xs
    in …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming pattern-matching let

7
推荐指数
1
解决办法
6304
查看次数

JavaScript ES6 const中的任何速度优势,而不是var/let

使用ES6"let"或"const"声明代替旧的忠实var会有任何速度优势吗?

javascript var const let ecmascript-6

7
推荐指数
0
解决办法
260
查看次数

我对javascript let和var in for循环感到困惑?

这是我的循环代码

var username = ['Sam', 'Adarsh', 'Rohit', 'Rajat'];
for(var i in username){
  console.log(username[i]);
}
Run Code Online (Sandbox Code Playgroud)

它根据需要输出相同,但我不确定为什么需要声明.我理解VAR和LET的概念,但不确定var在哪些情况下会在for循环中产生问题?

任何身体请帮助我理解这个概念.我是新的菜鸟,试图找出:)

谢谢你的帮助.

javascript scope for-loop var let

7
推荐指数
1
解决办法
6680
查看次数

有没有理由不放弃"var"?

在学习JavaScript的过程中,我了解到,Letconst引入来解决的问题Var就在全球范围内和提升,如果再声明不给错误.

现在我可以完全编写代码而不使用var吗?或者我现在应该知道它们并等到它们被广泛"接受"?

换句话说,如果我只使用let和,我暂时应该担心兼容性问题const吗?

javascript var const let

7
推荐指数
1
解决办法
289
查看次数

Swift 5.5 async let - 错误:表达式为“async”但未标记为“await”

WWDC21 引入了带有async/await 的Swift 5.5。在探索 Swift 中的结构化并发在 Swift WWDC21 会话中遇到 async/await 之后,我正在尝试使用async let函数。

这是我的游乐场代码:

func doIt() async -> String {
    let t = TimeInterval.random(in: 0.25 ... 2.0)
    Thread.sleep(forTimeInterval: t)
    return String("\(Double.random(in: 0...1000))")
}

async {
    async let a = doIt()
    async let b = doIt()
    async let c = doIt()
    async let d = doIt()
    
    let results = await [a, b, c, d]
    for result in results {
        print("  \(result)")
    } …
Run Code Online (Sandbox Code Playgroud)

asynchronous let ios async-await swift

7
推荐指数
2
解决办法
474
查看次数

难以区分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
查看次数