尽管Lua没有区分浮点数和整数,但有些情况下你想要使用整数.如果你不能做一个类似C的演员或没有类似Python的东西,将数字转换为整数的最佳方法是什么int?
例如,在计算数组的索引时
idx =位置/宽度
你怎么能确保idx有效的数组索引?我提出了一个使用的解决方案string.find,但也许有一种使用算法的方法显然会更快.我的解决方案
function toint(n)
local s = tostring(n)
local i, j = s:find('%.')
if i then
return tonumber(s:sub(1, i-1))
else
return n
end
end
Run Code Online (Sandbox Code Playgroud) 我目前正在与Haskell 一起完成SICP.练习1.15询问函数被调用的次数.这个想法可能是你应该使用替换方法,但我想知道如何在代码中这样做.
在命令式语言中,可以保留全局变量,并在每次调用函数时递增它.但是你会如何在Haskell(或纯粹的功能方式)中实现呢?
在SICP的3.2.2节中执行以下代码
(define (square x)
(* x x))
(define (sum-of-squares x y)
(+ (square x) (square y)))
(define (f a)
(sum-of-squares (+ a 1) (* a 2)))
(f 5)
Run Code Online (Sandbox Code Playgroud)
根据该图解释.
每次应用函数时,都会创建一个新帧(标记为E1through E4),表示符号和值之间的一组绑定.当符号未绑定在框架中时,将查询该框架的封闭环境以查找该特定符号的绑定.
该图的有趣之处在于标记的所有帧E都包含在全局环境中.该文本解释说这是因为函数是在全局环境中定义的,但没有详细说明问题:
请注意,每个帧都由
square指向全局环境创建,因为这是square过程对象指示的环境.
相反,如果框架包含在调用函数的环境中,比如E3包含在E2其中E1,那么它是否是动态作用域语言如何工作的有效模型?此外,图中的框架具有相同的"父"环境的方式是因为Scheme是词法范围的吗?