为了更好地了解 Rust,我正在构建一个简单的文本编辑器并具有以下结构:
struct File {
rows: Vec<Row>,
filename: Option<String>
}
impl File {
fn row(&self, index: u16) -> &Row{
&self.rows[index as usize]
}
}
struct Row {
string: String,
}
struct EditorState {
file: File,
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我将编辑器的状态保存在一个结构体中,该结构体引用了包含多行的文件,其中包含一个字符串(这些结构体中的每一个都有更多的字段,但我已经删除了那些不相关的到问题)
现在我想让我的行可编辑并添加以下内容:
impl Row {
fn insert(&mut self, at: u16, c: char) {
let at = at as usize;
if at >= self.string.len() {
self.string.push(c);
} else {
self.string.insert(at, c)
}
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我尝试更新行的方式:
//In the actual functon, I am capturing the keypress,
//get …
Run Code Online (Sandbox Code Playgroud) 我想做以下事情:我希望在HTML/JavaScript(jQuery/jQuery UI,如果需要)中使用打字机效果.关于如何在字符串上创建打字机效果(例如这个),有很多很好的例子.我想做类似的事情,但是有一个完整的HTML字符串,不应该输出,而是正确插入到网页中.
示例字符串:
<p>This is my <span style='color:red;'>special string</span> with an <img src="test.png"/> image !</p>
Run Code Online (Sandbox Code Playgroud)
应使用打字机动画键入此字符串.即使在打字时,"特殊字符串"的颜色也应为红色,图像应出现在单词"an"之后和单词"image"之前.解决方案的问题在于它们将逐个字符的标记插入到网页中,这导致在本示例中键入"特殊字符串"时未关闭.我考虑用jQuery解析字符串并迭代数组,但我不知道如何处理嵌套标记(如本例中的p和span)
我的iPhone应用程序中有一个相当简单的设置,带有导航控制器和视图控制器.视图控制器有一个标题,对于我的大多数视图,按下其他视图控制器按预期工作:标题用作导航栏上"后退"按钮的标签,并显示新视图.从堆栈中弹出新视图后,将显示旧视图及其标题.
但是,只要推送的视图控制器使用返回值YES实现prefersStatusBarHidden,导航栏中的标题就会在从堆栈中弹出此视图后消失 - 它仍然为空,甚至不显示我的自定义右栏按钮.
此外,在横向而不是纵向中执行此操作不会显示此行为 - 标题正确显示.如果您在纵向中遇到此问题,您可以将手机转为横向并再次回到纵向,标题和其他所有内容将重新出现.
我不确定这是否已经存在于以前版本的iOS中,但我目前在iOS 8中看到它.
我一直在使用Instagram的实时推送API(http://instagram.com/developer/realtime/)很长一段时间来获取特定位置的更新.我使用"半径"的最高值,即5000米.在过去的4周里,我注意到通过API收到的更新次数明显减少(但不是零).其他应用程序似乎也有同样的问题,如http://now.jit.su/.我还在Instagram上提交了一份错误报告,该报告没有得到答复.
我的问题是: - API有什么变化吗? - 应用程序中有任何更改(以便不是每张照片都会发布)? - 还有其他人遇到过这个问题吗? - 有什么我可以尝试让它再次运作?
我知道这不是一个完美的SO问题,但我无法在谷歌上挖掘任何东西,而且Instagram开发者页面直接在这里寻求支持.任何帮助是极大的赞赏.
我正在尝试创建一个阻塞控制流程,但已经走到了死胡同.这个想法是请求进入并流经许多处理函数.每个功能都会执行某些操作,并决定是否现在满足请求.如果是,则处理停止,否则,调用下一个处理程序.每个处理程序可能会也可能不会异步执行某些操作(如获取/写入数据).如果是这种情况,那么以下处理程序依赖于启动之前的数据.
到目前为止,我有两个想法,它们都不能满足这些要求:1)所有处理程序都是函数,它们被推入一个数组并迭代some
.如果处理程序希望停止控制流程,则只需返回true
.使用这种方法,我不能让任何处理程序调用异步函数.
2)所有处理程序都是链接的承诺.这对我来说似乎是一个更好的主意,但我无法弄清楚如何最好地处理停止控制流程.我有两个想法: - 保持一个变量,设置为true
处理程序决定中断流程.在每个处理程序中检查此值,并在需要时立即解决.这意味着很多重复的代码.- 拒绝承诺,如果它不希望继续正常流动,并继续catch
.然而,使用错误作为控制流程的手段的想法让我很痛苦 - 而且这意味着我必须处理由于实际错误而调用catch的情况.
我的蜘蛛般的感觉告诉我必须有另一种方式,但我无法弄清楚.