在查看我的反汇编代码时,我看到了很多以下内容:
00B442E9 push 4
00B442EB push 3
00B442ED lea ecx,[ebp-24h]
00B442F0 call Foo::Bar (0B41127h)
Run Code Online (Sandbox Code Playgroud)
我理解在通话之前推送参数,但是lea这里做了什么?
我正在学习函数式编程,并尝试以函数式方式解决几个问题.在将问题分解为函数时,我经历过的一件事是,似乎我有两个选择:使用具有相似参数列表的几个不同的函数,或者使用嵌套函数,作为闭包,它们可以简单地引用父函数中的绑定.
虽然我最终采用第二种方法,因为它使函数调用更小并且似乎"感觉"更好,从我的阅读中看起来似乎我可能缺少函数式编程的一个要点,因为这似乎是"侧面" -effecty"?现在被授予,这些嵌套函数不能修改外部绑定,因为我使用的语言阻止了它,但是如果你看一下每个单独的内部函数,你不能说"给定相同的参数,这个函数将返回相同的结果"因为他们确实使用了父范围内的变量......我是对的吗?
什么是理想的进行方式?
谢谢!
我正在阅读一个使用以下示例的教程(我将稍微概括一下):
f :: Foo -> (Int, Foo)
...
fList :: Foo -> [Int]
fList foo = x : fList bar
where
(x, bar) = f foo
Run Code Online (Sandbox Code Playgroud)
我的问题在于,似乎你可以参考,x并且bar,通过名称,在获得它们的元组之外.如果我的猜测是正确的,这似乎就像在其他语言中解构参数列表一样.(换句话说,我没有做以下:)
fList foo = (fst tuple) : fList (snd tuple)
where
tuple = f foo
Run Code Online (Sandbox Code Playgroud)
我对这种行为是对的吗?在我读过的教程/书籍中,我从未见过它.有人能指出我有关这个问题的更多信息吗?
编辑:任何事情(列表,数组等)都可以以类似的方式进行解构,或者你只能用元组做到这一点吗?
我之前从未真正使用PowerShell,并且稍微使用它,看起来它使用cmd.exe的标签完成样式(填写第一个可能的候选人,然后你可以使用tab循环通过其他选择).我更喜欢像bash这样的方式,如果有多个候选者,它会显示一个列表.
有没有一种简单的方法可以通过任何机会打开它?
我这里有一个带有一些Java类的库.一个类有一些protected static方法,我意识到这是一个OOP禁止 - 但我不能改变它的代码.假设我有一个Scala类,它是上述Java类的子类,我该如何调用其受保护的静态成员?
是否可以在F#3.0中为Entity Framework创建一个类型提供程序,这样我就可以像使用SqlDataConnection(包含在Microsoft.FSharp.Data.TypeProviders中)那样获得整洁的IntelliSense,但是引入了EF?
我一直在读Ada,它看起来像一个很棒的成熟语言.但尽管它的历史和实际使用(甚至是一个非常好的IDE!),它并不是"非常受欢迎的互联网".所以我现在正在寻找资源,因为Google不再为我做太多事情了.wikibook有很多广度,但非常简洁,我发现很难理解.我已经查看了亚马逊上的书籍场景,我确信它们有一些好的,但它们通常都比较旧而且相当昂贵,所以我还没有尝试过.
Rosetta Code Ada的例子很有帮助,但我肯定会感谢它和GNAT之类的东西.
如果它存在,我会喜欢一个我可以进行一些讨论和问答的地方,欢迎新的Ada程序员.(我确定可能有一个comp.lang.ada或者其他东西,但是自从我尝试在comp.lang.lisp上提出初学者问题时,我倾向于对那些他们觉得不感兴趣的问题提出质疑. )
无论如何,我认为如果有人提出建议,请不要伤害.
抱歉这个愚蠢的问题,但我是第一次使用Qt和C++,并完成了教程和一些示例.
提到的一件事是Qt的东西不需要被明确删除.所以,主要问题,这也适用于Qt的集合吗?就像说我想要一个动态数量的MyWidgets,所以我保留了一个vector或其中任何一个.他们还在照顾我吗?
作为一个附带问题,是什么让它成为我所以不必担心析构函数?
之前我曾就我的第一个F#项目请求了一些反馈.在结束问题之前,因为范围太大,有人很友好地查看并留下一些反馈.
他们提到的一件事是指出我有许多常规函数可以转换为我的数据类型的方法.我尽职尽责地改变了这样的事情
let getDecisions hand =
let (/=/) card1 card2 = matchValue card1 = matchValue card2
let canSplit() =
let isPair() =
match hand.Cards with
| card1 :: card2 :: [] when card1 /=/ card2 -> true
| _ -> false
not (hasState Splitting hand) && isPair()
let decisions = [Hit; Stand]
let split = if canSplit() then [Split] else []
let doubleDown = if hasState Initial hand then [DoubleDown] else []
decisions @ split @ doubleDown
Run Code Online (Sandbox Code Playgroud)
对此:
type Hand …Run Code Online (Sandbox Code Playgroud) 我最初试图按照这个算法在 C# 中创建一个简单的 roguelike 地牢。但我想我只是太愚蠢了,因为我的结果总是一团糟。
然后我切换到我自己的算法,它产生了不太好但半可识别的地牢结果。
有没有人有任何以 BSP 方式执行此操作的示例,如链接文章中所述?最好不要被一堆游戏细节/库调用所困扰,因为(再次)我很愚蠢。
(如果你特别受虐并且希望我发布我拥有的代码,我可以,但我认为这对于一个 SO 问题来说太过分了。)