为什么在这个函数定义中,'window.angular'要这样使用?
我试图理解我需要用来与django集成的AngularJS文件,并且它具有我不熟悉的怪异语法(请记住我是初中的开发人员,所以这可能是您的面包和黄油)... 它类似: (function(angular, undefined){ 'use script'; var djng_forms_module = angular.module('ng.django.forms', []); funtion hasCode(s){ return ..... } var foo = ..... }(window.angular)); 我已经看过 this 关于窗口的javascript概念window部分是浏览器加载页面时创建的顶部(?)级别对象. 运行console.log(window.angular)打印出大量内部角度的东西.所以我猜那是Angularjs的内部胆量...? 但是,为什么这种怪异的封装是一个函数(与
0 2024-02-23
编程技术问答社区
有什么好的angular.identity()的用例吗?
根据文档 A function that returns its first argument. This function is useful when writing code in the functional style. 我想知道我可以在哪里找到这样的例子 - 在Angular应用中以功能样式编写代码. 谢谢 解决方案 gangularjs源代码的示例: function transformer(transformationFn, value) { return (transformationFn || angular.identity)(value); }; 说明: 在情况下以第一个参数提供transformationFn,它将以value为单位称为其自己的参数.否则,identity函数将以相同的值调用. ng源代码提及: 以功能样式编写代码时,此功能很有用. 这意味着在功能编程中没有全球范围,因此您始终必须通过/注入
0 2024-02-23
编程技术问答社区
如何判断何时创建一个新的组件?
当某人在AngularJS/Angular 上创建一个新组件时,我一直在寻找的逻辑后面最终框架. 我知道有些原则应该是抽象的,可重复使用,例如我已经在Angular Doc上看到,每个单独的路线都着眼于特定的组件(如何重复使用). 在创建新组件之前,我可能会提出任何可靠的问题? 解决方案 为了决定是否必须创建组件,我认为您必须回答以下问题: 您的代码块是否有可能重复使用?如果是,新组件的构建似乎是一个好主意. 您的代码很复杂吗?如果是的,也许是在单独的组件中拆分以使您的代码更可读和可维护的好主意. 其他解决方案 此建议适用于框架.通常是出于两个原因之一而制作的新组件: (1)可重复性 您将重新使用此组件.重复使用级别各不相同.某些代码可能是特定于项目的,但可以在项目的两个地方使用,但永远不会在项目之外使用.它仍然是重复使用的. 但是,如果它是一件高度可重复使用的代码,您应该真正完善它,也许将其发布给世界! (2)组织 有时代码可
0 2024-02-20
编程技术问答社区
Kotlin:如何从异步lambda中返回一个变量?
我正在使用 fun fetchTweets(): List { endpoint.httpGet(listOf("user" to "me", "limit" to 20)) .responseObject(Tweet.Deserializer()) { _, _, result -> result.get().forEach { Log.i("TWEET", it.text) } val tweets = result.get().toList() //I want to return this } } 如果我做return tweets val tweets下方,我会遇到一个错误: return is not allowed here. 对我来说很有意义.但是问题仍然存在,我如何编写返回lambda中创建的变量的函数?在这种情况下,我想返回tweets 解决方案
2 2024-02-11
编程技术问答社区
在使用RxJava进行电子邮件登录验证时,一个可观察到的东西被发射了两次
我正在制作简单的登录表格(电子邮件和密码),以尝试增强我的反应性编程技能.我将电子邮件字段验证按照我想要的方式工作时遇到了一些困难. 这是我的代码: final Observable email = RxTextView.textChanges(emailView); Observable emailIsValid = email.map(new Func1() { @Override public Boolean call(CharSequence charSequence) { Log.d("asdf", "emailIsValid call: " + charSequence); return Pattern.matches(Patterns.EMAIL_ADDRESS.patter
4 2024-02-04
编程技术问答社区
用RxJava限制吞吐量
我现在很难解释这种情况,因此我会写一个更简单的版本来解释这个问题. i有一个Observable.from(),它发出了由文件ArrayList定义的文件序列.所有这些文件都应上传到服务器.为此,我有一个可以完成工作并返回Observable的函数. Observable uploadFile(File file); 当我运行此代码时,它会变得疯狂,Observable.from()发出所有文件,它们都将所有文件上传到一个,或者至少要处理的最大线程. 我想并行2个最多2个文件上传.是否有任何可以为我处理的操作员? 我尝试了 buffer ,窗口以及其他一些,但它们似乎只将两个项目散发在一起,而不是不断上传两个并行文件.我还尝试在上传部分设置一个最大线程池,但在我的情况下不能使用. 应该有一个简单的操作员吗?我想念什么吗? 解决方案 我认为所有文件都在并行上载,因为您使用的flatMap()同时执行所有转换.取而代之的是,您应该
4 2024-02-04
编程技术问答社区
如何运行lambda函数传递给模拟方法?
我想知道可以运行lambda函数作为参数传递给模拟函数.并在调用模拟方法时运行它. 我正在使用Mockk,我认为代码是这样的: class DataManager { fun submit(lambda: (Int) => Unit) { ... } } ... val mock = mockk() every { mock.submit(lambda = any()) }.run { lambda(5) } 在我的实际实施中,数据纳格人调用服务器并在收回成功响应时将lambda作为回调. lambda恰好是正在测试的类的私人方法. 解决方案 您需要使用捕获而不是任何捕获. val dataManager: DataManager = mockk() every { dataManager.submit(captureLambda()) } answers { lambda Unit>().invok
0 2024-02-03
编程技术问答社区
功能性编程的分析和设计
当您打算使用Haskell(例如Haskell)开发系统时,如何处理分析和设计阶段? 我的背景是在急需/面向对象的编程语言中,因此,我被用来使用案例分析和使用UML来记录程序的设计.但事实是,UML与以对象为导向的软件方式固有地相关. 我对开发文档并为将使用功能编程开发的系统定义软件设计的最佳方法很感兴趣. 您是否还会使用用例分析或也许软件架构师如何定义系统的高级设计,以便开发人员遵循它? 当您应该展示解决方案的设计时,您向客户或新开发人员展示什么? 您如何在不先写所有内容的情况下记录整个事物的图片? 有什么可与 uml 在功能世界中? 解决方案 我不是专业人士,但我会尽力回答其中的一些问题. 您是否仍会使用用例分析[?] 我不明白为什么不明白.收集用例,并设计您希望公开满足用例的模块API.确定用例是否需要打字机,还是仅仅是普通功能. 或结构化分析和设计? 我不熟悉这种方法,但是从Wiki文章中收集的内容来看,它看起来很好.
如何改进/优化我在scala中的可怕代码,即图的二方性?
我为 当我找到isbipartite = false 时,我该如何打破 我只为尚未被vist的G.Keys dfs(是否是二分之一). (当有2个图形未连接时) import scala.collection.immutable.Queue case class Step(q: Queue[Int]=Queue(),visited: List[Int]=List(),colors: List[Int]=List(),isBipartite: Boolean = true) object Solution { def isBipartite(graph: Array[Array[Int]]): Boolean = { val g= graph.foldLeft(Map[Int,List[Int]]())((mp,arr)=>{ val i= graph.indexOf(arr) if(arr.isEmpty
0 2024-01-23
编程技术问答社区
一次性生成一个自定义的模式号码序列
我想使用功能初始化构造来一次生成以下数字序列: Array(0, 0, 0, 0, 3, 3, 6, 6, 9, 9, ..., n*3, n*3) 一种方法是: Array.fill[Int](2)(0) ++ Array.tabulate(4)(_*3) 但是,我需要将结构第二部分的每个值(即获得0, 0然后3, 3等)加倍.如何复制第二个构造的值? 我也无法找出会生成这种序列的数学函数. 解决方案 考虑单次通过的尾部回复解决方案 def pattern(n: Int): List[Int] = { @tailrec def run(n: Int, acc: List[Int]): List[Int] = { n match { case 0 => 0 :: 0 :: 0 :: 0 :: acc case i => run(i - 1, (i * 3) :: (i * 3) :: acc) } }
2 2024-01-23
编程技术问答社区
如何使用流将这个程序转换为java 8的功能风格?
问题 我写了一个程序,以找出给定字符串的大写和字符小写的所有可能性. 一个例子是, 输入 - " ab"/" ab"等 - 其中任何一个 输出 - [" ab"," ab"," ab"," ab"] 代码 不正确的算法 - 请在下面检查. public static ArrayList permuteUCLC(String a) { String s=new String(a.toLowerCase()); ArrayList arr = new ArrayList(); arr.add(a); int l = a.length(); for(int i=0;i
2 2024-01-23
编程技术问答社区
Haskell类型错误 `map (\idx -> (2.400 ** idx) / fact idx) [0..9]`fact :: Int -> Int`, Expected Int, Actual Double
在下面处理此问题时,我会遇到一个奇怪的错误. module Main where fact :: Int -> Int fact 0 = 1 fact n = foldr (*) 1 [1..n] calc_e_to_power :: Double -> Double calc_e_to_power x = foldr (+) 0 $ map (\idx -> (x ** idx) / fact idx) [0..9] main :: IO () main = do putStrLn $ show $ calc_e_to_power 2.4000 我正在获得fact函数的类型错误,该函数说预期Int,got Double. idx的类型如何在此处加倍. 我知道**将将Dise Dise的首次表达式的类型转换为double,但是2.3243 / 3在GHCI中的工作状态非常好.当我删除fact的类型签名时,它符合并完美工作. 不太确定我在这里错过了什么.
4 2024-01-23
编程技术问答社区
将一个列表细分为列表的列表
我想将一个列表细分为每个子列表的最大大小的列表.例如,给定的List(1,2,5,3,90,3,4,1,0,3)和定义为4的标准符号的最大尺寸,我想获得List(List(1,2,5,3), List(90,3,4,1), List(0,3))返回. 这就是已经完成的: val l: List[Int] = ??? val subSize: Int = 4 val rest: Int = if(l.size % subSize == 0) 1 else 0 val subdivided: List[List[Int]] = for{ j
0 2024-01-23
编程技术问答社区
在没有突变性的情况下解决迷宫的最简单方法
了解了一些Scala和FP的好处后,我正在重新实现以前的CS分配,以更好地了解FP.但是,我完成了一个作业,这似乎是不切实际的,可以用FP实施(或者至少是琐碎的翻译). 解决简单的2D迷宫时,有必要记住访问了哪些节点.但是,如果没有共享状态,每个递归电话如何知道其他递归调用的节点是什么?我可以将迷宫作为参数传递给每个递归电话,然后返回一个包含访问过地点的新迷宫,但这似乎太密集了,无法复制每个递归呼叫的整个迷宫.实施不变的迷宫求解器是否需要更先进的方法? 解决方案 您可以将包含访问的节点的集合传递(如果节点本身可以​​与设置中的平等相比).将项目添加到不变的集合中通常需要O(log n),因此检查集合中是否包含元素.这比复制迷宫要便宜得多. 其他解决方案 也许您注意到我的早期答案已被删除.尽管我只是在嘲笑乐趣,但仅提示"计算机以红色显示所有死端,并以绿色显示连接出口的路径",同时,这是我对我了解的隐喻功能范式 - 一种包含的预定确定性.鉴于我有限的理解和知识,我在Ha
10 2024-01-23
编程技术问答社区
将两个数组合并为一个所有可能组合的数组的算法
JavaScript中给出的示例: 假设我们有两个阵列[0,0,0]和[1,1,1].可以组合这两个阵列的所有可能方式的算法是什么.示例: mergeEveryWayPossible([0,0,0],[1,1,1]) // [ [0,0,0],[1,0,0], [0,1,0], [0,0,1], [1,1,0], [0,1,1], [1,0,1], [1,1,1] ] 将阵列合并为所有可能组合的数组.这与找到笛卡尔产品不同. 我也不确定这种组合被称为什么.如果算法或技术具有名称,请分享. 解决方案 列表monad 谁写了关于 delimited whatchamacallits 的人 - 我花了3个小时后,我花了3个小时来弄清楚它,我会在30秒内忘记一切! 更严重的是,与此答案相比,shift/reset是如此的不切实际,这是个玩笑.但是,如果我不首先分享这个答案,我们就不会很高兴将我们的大脑内而外旋转!因此,请,除非它们对手头的任务至关重要,否
0 2024-01-23
编程技术问答社区
查找重复字符的函数式编程算法
我正在转换 zxccvbn/a>从JavaScript到Scala.我正在寻找一种用于在字符串中查找重复字符序列的纯粹功能算法. 我知道我可以从JavaScript中翻译命令版本,但是我想根据功能编程通常给出的所有原因,尽可能保持副作用. . 该算法可以在Scala,Clojure,Haskell,F#,甚至是伪代码中. 谢谢. 解决方案 使用Haskell的标准高阶功能: Data.List.group在列表中找到相等元素的运行: > group "abccccdefffg" ["a","b","cccc","d","e","fff","g"] 我们关心这些运行的长度,而不是元素本身: > let ls = map length $ group "abccccdefffg" > ls [1,1,4,1,1,3,1] 接下来,我们需要每个组的起始位置.这只是组长度的部分总和,我们可以使用scanl来计算: > scanl (+)
0 2024-01-23
编程技术问答社区
在Haskell中缩短Knuth'的算法M(混合数)的时间
这是我实现Knuth算法M的C ++代码,该算法M产生混合radix编号: #include "visit.h" void algorithmM(vector& m) { m.insert(m.begin(),2); const int n=m.size(); vector a(n,0); M2: visit(false,a); int j=n-1; M4: if (a[j]==m[j]-1) {a[j]=0;--j;goto M4;} if (j==0) return; else {a[j]++;goto M2;} } int main() { vector m; int i; while(std::cin>>i) {if(i
2 2024-01-23
编程技术问答社区
最短的包含所有元素的子数组,而不使用数组?
问题:找到包含所有元素的最短子阵列的长度 示例:1 2 2 3 2 2 1 3 答案:3 我读到,解决此问题的最佳方法是使用滑动窗口方法.但是这种方法需要使用数组.是否有其他有效的方法可以通过存储每个元素的外观数量来使用数组? (我想通过在ML中写入该方法来使用这种方法) 解决方案 我假设您要避免数组的原因是您要编写习惯性 ml代码,因此宁愿使用纯粹的功能数据结构而不是可变的数组? 如果是这样,那么您可以使用 而不是 o (1)查找,您有 o (log m )查找,其中 m 是不同元素的数量. 而不是 o (1)突变,您有 o (log m )转换,其中转换返回地图(共享大多数节点). 其他解决方案 我不明白您对数组的问题.您没有指定您使用的是哪种ML家庭语言,但是OCAML(我最喜欢的一种)肯定具有数组.如果您确实出于某种宗教原因不喜欢阵列,那么您可以随时使用带有整数键的地图,该键与数组相同但要慢得多.
0 2024-01-23
编程技术问答社区
在一个列表中对相邻的元素进行分组
假设我想编写一个执行此操作的函数: 输入:[1,1,3,3,4,2,2,5,6,6] 输出:[[1,1],[3,3],[4],[2,2],[5],[6,6] 它分组相同的相邻元素. 此方法的名称应该是什么?此操作有标准名称吗? 解决方案 在[1,1,3,3,4,2,2,5,6,6]中,类似[1,1]的东西通常称为 run (如Run-Rength编码中,请参见其他解决方案 @tailrec def groupRuns[A](c: Seq[A], acc: Seq[Seq[A]] = Seq.empty): Seq[Seq[A]] = { c match { case Seq() => acc case xs => val (same, rest) = xs.span { _ == xs.head } groupRuns(rest, acc :+ same) } } scala> groupRuns(Vecto
0 2024-01-23
编程技术问答社区
怎样才能生成所有哲罗米诺的列表?
如何生成所有四胺的列表? 或者,更一般而言,如何生成仅限于许多单元的多元群岛的子集? 解决方案 有很多方法可以做到这一点.我发现的一个选择效果很好,就是递归地思考它.特别是: 单个矩形是1-Omino. 对于任何n-omino,您可以通过将块与n-omino的任何块相邻放置. 这为您提供了列出所有可能的N-Ominos的递归方式.但是,您需要小心,因为这将产生同一N-Ominos的多个旋转和翻译.您可以通过选择一些参考坐标系,然后翻译N-Omino来解决此问题,以使其始终与该系统的轴齐平.一旦工作后,就可以通过将所得的N-摩尼诺围绕轴旋转,然后将其转换回规范的位置来生成所有旋转. . 其他解决方案 N-Omino所需的最大网格是NXN.然后生成全部排除旋转和翻译. 您可以将其视为N-1步骤中的一个路径遵循算法.如果您从网格的左上角单元格开始,并且仅从那里向右移动或向下移动,则可以避免大多数翻译和旋转.如果我没记错的话,唯一剩下的是同构的N-胺.例如.
8 2024-01-23
编程技术问答社区