小编cor*_*und的帖子

为什么type(nil)== nil是假的?

我正在阅读"Lua编程"一书,我不懂运动2.1:

表达式的价值是什么

型(无)==无?

(你可以用Lua来检查你的答案.)你能解释一下这个结果吗?"

当我执行此代码时,我得到"假"作为结果.我无法解释这个结果,从我的观点来看,正确的结果应该是"真实的".我试过了

type(some_undeclared_variable)==nil 
Run Code Online (Sandbox Code Playgroud)

它也给了我"假".

null lua

5
推荐指数
1
解决办法
813
查看次数

从控制台读取字符串而不使用 for 循环

是否有任何优雅的功能方法可以从控制台输入读取 N 个字符串?F# 的乐趣和利润建议避免 for 循环,所以我使用了递归,但它看起来又丑又长。

代码说明:我需要从控制台读取几个字符串(在控制台输入的第一行中指定了确切的数字),将它们连接起来并转换为整数数组。

let rec recReadline n =
    match n with
        | 0 -> ""
        | _ -> let x = n - 1
               " " + Console.ReadLine() + recReadline x 

let getArrayOfIntFromConsole = 
    let x = Console.ReadLine() |> int |> recReadline
    let trimmedString = x.Trim()
    let numArray = trimmedString.Split ' ' |> Array.map(int)
    numArray
Run Code Online (Sandbox Code Playgroud)

我正在学习 f#,对于菜鸟问题​​很抱歉。

更新1

感谢您的回复!这是来自黑客等级的任务:https : //www.hackerrank.com/challenges/diagonal-difference。起初我决定将输入和算法逻辑分开并创建了这篇文章。我描述问题的上下文不够清楚,建议使用 Array.Init。它对我没有帮助,因为输入字符串由许多由空格分隔的整数组成。我用 Array.Init 将一个回复标记为正确答案,因为它是我糟糕的问题的正确答案。

我决定在一个函数中读取控制台和计算,它对我来说工作正常。我的最终代码:

open System

let rec recDiagDif recCounter primaryDiagSum …
Run Code Online (Sandbox Code Playgroud)

f#

5
推荐指数
2
解决办法
1144
查看次数

Lua中的函数可以在调用之间存储本地值吗?

我正在阅读"Lua编程",我不理解Lua中这段代码中的函数行为:

function newCounter ()
  local i = 0
  return function () -- anonymous function
    i = i + 1
    return i
    end
end

c1 = newCounter()
print(c1()) --> 1
print(c1()) --> 2
Run Code Online (Sandbox Code Playgroud)

从我的观点来看,每个调用c1()都应该返回,1因为i在of的开头被初始化为零newCounter().但它看起来像线

local i = 0
Run Code Online (Sandbox Code Playgroud)

在电话中被跳过c1().并且newCounter()表现得像对象不像功能.我对Scheme和C#了解不多,所以我熟悉一流的功能.函数返回函数对我来说没问题,但它如何存储i调用之间的值?

lua closures

4
推荐指数
1
解决办法
76
查看次数

标签 统计

lua ×2

closures ×1

f# ×1

null ×1