问题标签 [refs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
697 浏览

clojure - Clojure 中的发牌

我正在尝试编写一个蜘蛛纸牌播放器作为学习 Clojure 的练习。我想弄清楚如何处理这些卡片。

我创建了(在 stackoverflow 的帮助下),从两个标准牌组中洗牌的 104 张牌序列。每张卡都表示为

Spider 的画面将表示如下:

其中 :stacks 是卡片向量的向量,其中 4 个包含 5 个面朝下和 1 个面朝上的卡片,其中 6 个包含 4 个面朝下和 1 个面朝上的卡片,总共 54 个卡片,并且 :complete 是一个(最初)完整的 ace-king 集的空向量(表示为,例如,用于打印目的的 king-hearts)。未处理的牌组的其余部分应保存在 ref

在游戏过程中,画面可能包含,例如:

其中“AH”是一张包含 {:rank :ace :suit :hearts :face-up false} 等的牌。

如何编写一个函数来处理堆栈,然后将剩余部分保存在 ref 中?

0 投票
2 回答
10789 浏览

clojure - clojure 中全局变量的最佳实践(refs vs alter-var-root)?

我发现自己最近在 clojure 代码中使用了以下成语。

大多数时候,这甚至不是多线程代码,可能需要 refs 为您提供的事务语义。感觉就像 refs 不仅仅适用于线程代码,而且基本上适用于任何需要不变性的全局。有更好的做法吗?我可以尝试重构代码以仅使用 binding 或 let 但这对于某些应用程序可能会变得特别棘手。

0 投票
2 回答
301 浏览

multithreading - 更改 Clojure 引用的线程越多,每个线程的重试率越高?

我有点担心这个。
想象一下最简单的版本控制方式,程序员只需从主存储库中复制所有目录,如果主存储库仍然相同,则在更改文件后反向执行。如果它已被另一个人更改,他们必须再试一次。

当程序员的数量增加时,重试次数自然也会增加,但它可能与程序员的数量不成正比。
如果十个程序员工作,每人一个工作需要一个小时,那么完成所有工作至少需要十个小时。
如果他们是认真的,大约 9 + 8 + 7 + ... 1 = 45个工时将一事无成。
数百名程序员中,大约 99 + 98 + ... 1 = 4950个工时付诸东流。

我试图计算重试次数并得到结果。

资源

CPU:2.93GHz 四核 Intel Core i7
结果

我将工作更改为 (Thread/sleep n) 而不是 (fib n) 并得到了类似的结果。

在线程/睡眠的情况下,我认为重试次数可能会超过这个结果,因为 CPU 可用。
为什么重试次数不增加?

谢谢。

0 投票
1 回答
406 浏览

macos - 我应该释放从 Mac 上的字典中获取的对象吗?

IE:

0 投票
3 回答
7015 浏览

git - git记录分支头的历史吗?

Git 分支头和标签是提交的指针,这些指针可以隐式移动(在 a 之后commit)或显式(在 a 之后branch -m)移动。

Git 会记录这些指针的状态历史吗?

我认为至少有两个原因:

  • 看两天前 repo 的状态,包括分支头指向的地方。
  • 确保不会因为有人以某些提交变得无法访问的方式移动分支头而丢失历史记录。

请注意,上述在 Mercurial 中是可能的,因为它将分支名称存储在每个提交中。

再说一遍,在 Git 中,.git/refs/ 的内容是受版本控制的,还是有办法让它们如此?

(我正在尝试为团队决定使用 Mercurial 还是 Git,并且我想确保记录对共享存储库的所有更改,包括引用。我不在乎开发人员对他们的私有存储库做了什么。)

谢谢你。

0 投票
2 回答
436 浏览

ocaml - 关于 Ocaml Refs 的初学者问题

您应该通过将某些东西插入 ??? 得到 50 的答案 (不是阴影)。但是我现在不知道如何更改原始 ref 的值,考虑到 x := 50 现在将应用于 SECOND x ....

0 投票
5 回答
13656 浏览

git - Git command to save a stash without modifying working tree?

I have been wanting to use a git command that saves a stash without modifying my working tree, as a lightweight backup that's safe from any git resets or whatever I might do to screw up my index. Basically the functional equivalent of "git stash save && git stash apply" except that the working copy is never touched, since this can make certain text editors/IDE's cranky.

Something like this is approaching what I want, but not quite:

This works functionally, but the issue I'm having is that no stash message shows up in "git stash list" even though the actual stash commit does have my message in it. Considering how large a stash can get, stash messages are pretty important.

0 投票
1 回答
188 浏览

concurrency - 是否应该在事务中读取多个 Clojure 引用以保持一致性?

这是一个理论问题,我希望更好地理解 Clojure 的并发性。

假设我正在写 boids。假设每个 boid 是一个单独的绿色线程,它在表示世界网格的向量或 refs 中改变位置。想想希基的蚁群。

现在,Clojure.org 上的文档指出“所有对 Refs 的读取都将看到从事务起点(它的‘读取点’)开始的‘参考世界’的一致快照。”

这是否意味着我只能通过读取事务中的引用向量(即在 dosync 上下文中)来获得模拟的一致快照,例如绘制它?

谢谢!

0 投票
1 回答
1230 浏览

controller - EXTJS 控制器视图自动生成的 getter

我正在开发一个 Extjs 应用程序。这是我的控制器之一

这里是相关视图:

问题是 getter this.getCodetabs() 是未定义的。它不应该由 refs 自动生成吗?我究竟做错了什么 ?

这是我的应用程序:http : //atomcodepad.com/acp 您可以尝试单击“addtab”按钮来查看我的问题正在发生。

0 投票
2 回答
2106 浏览

ocaml - OCaml 无效参数(“等于:抽象值”)

似乎我无法为 ref 分配抽象值,我不知道该怎么做。

当我尝试都是 Big_nums 的最大:=i 和深度:=ret 时,代码似乎崩溃了。有没有办法解决?