问题标签 [trampolines]
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.
objective-c - 如何为字符串构造构建一个不错的通用 API?
在我们的应用程序中,我经常需要为按钮等 UI 元素加载图像。每个图像都有几种变体,例如横向/纵向、禁用/启用、推送/常规,甚至是白色/红色/灰色等颜色。加载代码有一些变量告诉它要加载哪个变体。例如,看一下以下示例按钮类:
这里加载代码必须根据按钮类型查看属性和 loadbutton_white_pushed.png
等等。button_red_landscape.png
代码在概念上很简单(只是一些字符串格式和[UIImage imageNamed:]
调用),但同时有很多噪音和样板。
我试图想出一个简单的帮助类来让这更容易。该类将采用将属性映射到结果图像名称的规则,然后它将采用手头的实际属性值并返回适当的图像。就像是:
然后我会这样称呼:
目前我对增加的复杂性是否值得感兴趣,我对 API 的设计和实现感兴趣。我认为“记录”API 可以工作,但“查询”API 不行,因为setButtonStyle:
返回void
,因此我无法链接调用或返回图像。
你有想法为这个问题提供一个很好的通用 API 吗?
ios - JSON.NET:不能使用 MonoTouch “用完 2 型蹦床”
我在https://github.com/ayoung/Newtonsoft.Json尝试了 JSON.NET 和 MonoTouch 端口,但得到了这个序列化错误:
我也试过 RestSharp.Monotouch 并得到类似的错误:
c# - MonoTouch 6.0.8 发行说明中的“运行时蹦床”是什么意思?
运行时蹦床:不再需要在 Mono 运行时手动管理蹦床,蹦床现在是动态处理的。
这是什么意思?无论如何,您如何手动管理蹦床?
当你知道你可能会用完蹦床时,你还需要添加编译器标志吗?
return - 为什么 return/redo 在调用上下文中评估结果函数,但不评估块结果?
return
昨晚我从函数中了解到 /redo 选项。它允许您返回另一个函数,然后在调用站点调用该函数并从同一位置重新调用评估器
尽管它foo
是一个只接受一个参数的函数,但它现在的行为就像一个接受两个参数的函数。否则,类似的事情将要求调用者知道您正在返回一个函数,并且该调用者必须手动对其使用do
评估器。
因此,如果没有return/redo
,您将得到:
foo
消耗它的一个参数并按值返回一个函数(没有调用它,因此解释器继续前进)。然后表达式评估为 10。如果return/redo
不存在,您必须编写:
这使调用者不必知道(或关心)您是否选择返回要执行的函数。并且很酷,因为您可以执行尾调用优化或为返回功能本身编写包装器之类的事情。这是return
打印消息但仍退出函数并提供结果的变体:
但函数并不是唯一在do
. 因此,如果这是“在呼叫站点消除对 DO 的需要”的一般模式,那么为什么不打印任何内容呢?
它只是按值返回块,就像正常返回一样。它不应该打印出“测试”吗?这就是do
......呃,用它来做:
javascript - Trampoline over Recursion 用于数组和对象迭代
这可能只是“周五 5:00 后我想回家”的效果,但我被这个问题难住了。我有一个递归迭代器方法,我将调用每个方法:
这在大量数据上非常慢(我将在下面解释)。正如@raganwald 在这里解释的那样,蹦床是解决问题的方法。. 我的问题是:如何重构这个递归函数以利用蹦床技术?
所以我有一个轮询机制来请求树的当前状态,在这种情况下,它是一个位置树,它看起来像:
树呈现在属于位置的事物网格中,对于网格中具有位置的每一行,我需要呈现树,将根设置为该行的位置。所以如果我们有:
所以不要介意部分或全部这些可以在服务器端处理——我稍后会优化数据获取的性能。
有没有一种有效的方法来重写我的每种方法以使用 Trampoline 或CPS 样式?
unity3d - 蹦床统一代码不起作用
所以我试图创建一个逼真的蹦床跳跃,而不是玩家从蹦床上掉下来然后弹弓弹回来,而是让玩家在接触蹦床时立即射击并下降相对重力。
我哪里出错了,我能做些什么来解决它?
}
return - 如何跳出 Lisp 中的函数?
在 (Common) Lisp 中是否可以跳转到另一个函数而不是调用另一个函数?我的意思是,当前函数被破坏并调用另一个函数,而无需跳回数千个函数,就好像我自己决定是否完成了尾调用优化,即使它不是尾部。我不确定“(return-from fn x)”是否可以,我想要什么。
例子:
'jump' 应该就像调用下面的函数一样,不保存这个函数的位置,而是返回到原来的 funcall 所在的地方,这样就不会发生堆栈溢出。'rest' 只应在 x 为 nil 时执行。
box2d - 如何使用 box2d 调整这个蹦床/橡皮筋对象?
我正在尝试使用 box2d 和 cocos2d 创建这个蹦床/橡皮筋。我到了一个地步,在我的脑海中,除了没有得到预期的效果外,它应该都可以正常工作。我的蹦床是这样的:
- 绿色物体和蓝色物体是静态的
- 红点表示这些对象之间的距离关节,具有以下参数:
频率 = 10.0 阻尼比 = 0.1
- 棕色物体具有以下属性:
摩擦 = 0.0 恢复 = 0.3 密度 = 20.0
- 蓝色对象是静态对象
- 绿线代表具有以下属性的距离关节:
频率 = 4.0 阻尼比 = 0.5
- 掉落在蹦床上的物体的属性如下:
虚构 = 0.0 恢复原状 = 0.5 密度 = 100.0
当我将物体放在蹦床上时,我使用此配置获得的效果更像是床垫掉落效果,我的物体被弹起一两次,但弹起的次数不多,然后就停止了。
我的问题是:
这是一个好方法吗?我怎样才能调整这个蹦床,让它更像蹦床而不是床垫?
回答 #1 后,如何使我的蓝色虚拟/幽灵对象不响应任何碰撞,因此就用户而言不可见/不存在?
谢谢!
javascript - 蹦床、递归和惰性求值
我正在尝试在 JavaScript 中实现基本的惰性序列。我只使用闭包和延续。这是我到目前为止得到的:
我没有发布咖喱功能,因为它与问题没有直接关系。
现在交易破坏者是filter
. 规范的实现是尾递归的:
当我在一个序列上多次运行它时,堆栈最终会爆炸:
我知道一个常见的解决方法是使用trampoline,这在一个热切的世界中相对容易,但对于一个惰性序列来说实现它似乎令人生畏。我在 Scheme 中找到了一个复杂的解决方案,但我放弃了尝试在 JavaScript 中按原样实现它。
这是否像看起来那么复杂?有没有另一种方法来解决这个问题,也许是迭代?关于以理智的方式将 Scheme 代码移植到 JavaScript 的任何提示?
scala - 了解如何将递归转换为蹦床
我最近读到蹦床是一种消除尾声的方法。我想将我的一个功能转换为利用蹦床的功能,但我很难开始(我来自 OO 世界)。
具体来说,如果我想在“More()”语句中进行两个不同的递归调用,可以吗?