在思考功能性思维模式时,假设函数应该是纯粹的,那么可以断定任何没有参数的函数基本上只是一个值.
然而,reallity阻碍了,并且对于不同的输入,我可能不需要某个函数,并且如果该函数在计算上是昂贵的,那么如果不需要它我不想评估它.
我找到了一个解决方法,使用let func _ = ...func 1或其他任何东西来调用它,但这对读者来说非常非惯用且令人困惑.
这归结为一个问题:在F#中,是否有一种正确的方法来声明一个零参数的函数,而没有在声明中进行评估?
如果您不熟悉高峰时段,游戏包含一系列不同大小的汽车,水平或垂直设置在具有单个出口的NxM网格上.
只要另一辆车没有挡住它,每辆车都可以按照它设定的方向前进/后退.你永远不能改变汽车的方向.
有一辆特别的车,通常是红色的.它设置在出口所在的同一排,游戏的目标是找到一系列动作(移动 - 向前或向前移动N步),这将允许红色汽车驶出迷宫.
我一直在努力思考如何在计算上解决这个问题,我真的不能想到任何好的解决方案.
我想出了一些:
所以问题是 - 如何创建一个采用网格和车辆布局的程序,并输出一系列步骤来获得红色汽车?
次级问题:
示例:如何在此设置中移动汽车,以便红色汽车可以通过右侧的出口"退出"迷宫?
http://scienceblogs.com/ethicsandscience/upload/2006/12/RushHour.jpg
我们正在逐步将我的应用程序转换为React Native.我一直在iOS上的React Native中遇到依赖注入问题.
我在我的应用程序中有一些服务,我想在本机模块中使用.目前,它们是通过台风注入的,一切正常.
但是,react native本身会将任何本机模块初始化并维护为单例.这使我无法让Typhoon初始化它们,因此我无法将依赖关系注入其中.
可以做些什么?自己创建RCTBridge是一个选项,但感觉非常低级,并且仍然需要弄清楚如何将其注入到UIView中.
我想使用事件在本机ios/android和我的本机应用程序之间进行通信.
我看到两种方法:DeviceEventEmitter和NativeAppEventEmitter,它们看起来完全相同.
他们之间有什么区别?我为什么要挑一个呢?
这样的事情(是的,这不涉及一些边缘情况 - 这不是重点):
Run Code Online (Sandbox Code Playgroud)int CountDigits(int num) { int count = 1; while (num >= 10) { count++; num /= 10; } return count; }
你对此有何看法?也就是说,使用函数参数作为局部变量.
两者都放在堆栈上,性能几乎相同,我想知道这方面的最佳实践方面.
当我为这个函数添加一个额外的冗余线路时,我觉得自己像个白痴int numCopy = num,但它确实让我感到烦恼.
你怎么看?这应该避免吗?
我正在尝试使用linq使用C#实现一个功能样式的快速排序,这个代码随机工作/不起作用,我无法弄清楚为什么.
重要的是:当我在数组或列表上调用它时,它工作正常.但是在一个未知的 - 它真的是IEnumerable,它变得疯狂(失去价值或崩溃,通常.有时工作.)
代码:
Run Code Online (Sandbox Code Playgroud)public static IEnumerable<T> Quicksort<T>(this IEnumerable<T> source) where T : IComparable<T> { if (!source.Any()) yield break; var pivot = source.First(); var sortedQuery = source.Skip(1).Where(a => a.CompareTo(source.First()) <= 0).Quicksort() .Concat(new[] { pivot }) .Concat(source.Skip(1).Where(a => a.CompareTo(source.First()) > 0).Quicksort()); foreach (T key in sortedQuery) yield return key; }
你能在这里发现任何可能导致失败的故障吗?
编辑:一些更好的测试代码:
Run Code Online (Sandbox Code Playgroud)var rand = new Random(); var ienum = Enumerable.Range(1, 100).Select(a => rand.Next()); var array = ienum.ToArray(); try { array.Quicksort().Count(); Console.WriteLine("Array went fine."); } catch (Exception ex) { …
我有以下代码(生成给定a,b和c的二次函数)
Func<double, double, double, Func<double, double>> funcGenerator = (a, b, c) => f => f * f * a + b * f + c;
到目前为止,很可爱.
但是,如果我尝试声明一个名为a,b,c或f的变量,visual studio弹出一个"A local variable named 'f' could not be declared at this scope because it would give a different meaning to 'f' which is used in a child scope."
基本上,这会失败,我不知道为什么,因为一个子范围甚至没有任何意义.
Func<double, double, double, Func<double, double>> funcGenerator =
(a, b, c) => f => f * f * a + b * f + …Run Code Online (Sandbox Code Playgroud) 由于我将免除你的原因,我有两周时间学习一些C++.
我可以独自学习,但我需要一个好的来源.我认为我没有时间阅读整本书,所以我需要一些悬崖笔记,或者我需要查阅的特定章节/专业资源.
我知道我的Asm/C/C#井,因此不需要从C继承的任何东西或任何OOP.
我需要的是以下主题的一些来源(我有一个页面,指明需要什么,这基本上是它,但我修剪了我所知道的):
如果您觉得某些未与C/C#共享的基本C++概念未包含在此列表中,请随时输入.但是上面的主题是我应该在两周内大致知道的那些主题.
任何帮助将不胜感激,谢谢.
编辑:我想澄清 - 我不希望学习两周然后去写Quake.
我需要达到一个级别,给出一些代码和一段时间来思考它,我能理解它.像++ X vs X ++这样的细微差别并不重要,只要知道主要关键词是什么,等等.