小编and*_*man的帖子

为什么Lua数组(表)从1开始而不是0?

我不明白Lua这一部分的决定背后的理由.为什么索引从1开始?我读过(和其他人一样)这篇伟大的论文.在我看来,语言的一个奇怪的角落是非常愉快的学习和编程.不要误会我的意思,Lua很棒,但必须在某处做出解释.我发现的大部分内容(在网上)只是说索引从1开始.完全停止.

阅读其设计师对该主题的看法将是非常有趣的.

请注意,我在Lua中"非常"初学者,我希望我不会错过关于表格的明显内容.

arrays lua lua-table

120
推荐指数
6
解决办法
5万
查看次数

将本地String作为切片返回(&str)

有几个问题似乎与我遇到的问题有关.例如,请看这里这里.基本上我正在尝试String在本地函数中构建一个函数,但是然后将其作为一个函数返回&str.切片不起作用,因为寿命太短.我无法str直接在函数中使用,因为我需要动态构建它.但是,我也不想返回a,String因为一旦它构建完成,它进入的对象的性质就是静态的.有没有办法让我的蛋糕也吃?

这是一个最小的非编译复制:

fn return_str<'a>() -> &'a str {
    let mut string = "".to_string();

    for i in 0..10 {
        string.push_str("ACTG");
    }

    &string[..]
}
Run Code Online (Sandbox Code Playgroud)

rust

37
推荐指数
3
解决办法
8961
查看次数

更简洁的HashMap初始化

我用a HashMap来计算字符串中不同字符的出现次数:

let text = "GATTACA";
let mut counts: HashMap<char, i32> = HashMap::new();
counts.insert('A', 0);
counts.insert('C', 0);
counts.insert('G', 0);
counts.insert('T', 0);

for c in text.chars() {
    match counts.get_mut(&c) {
        Some(x) => *x += 1,
        None => (),
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有更简洁或声明的方式来初始化HashMap?例如在Python中我会这样做:

counts = { 'A': 0, 'C': 0, 'G': 0, 'T': 0 }
Run Code Online (Sandbox Code Playgroud)

要么

counts = { key: 0 for key in 'ACGT' }
Run Code Online (Sandbox Code Playgroud)

hashmap rust

26
推荐指数
3
解决办法
5296
查看次数

如何压缩两个以上的迭代器?

是否有更直接,更易读的方法来完成以下任务:

fn main() {
    let a = [1, 2, 3];
    let b = [4, 5, 6];
    let c = [7, 8, 9];
    let iter = a.iter()
        .zip(b.iter())
        .zip(c.iter())
        .map(|((x, y), z)| (x, y, z));
}
Run Code Online (Sandbox Code Playgroud)

也就是说,如何从n个迭代中构建迭代器,从而产生n元组?

iterator rust

23
推荐指数
2
解决办法
5188
查看次数

Shadow DOM元素可以继承CSS吗?

我正在听这集JavaScript Jabber:

http://javascriptjabber.com/120-jsj-google-polymer-with-rob-dodson-and-eric-bidelman/

Rob曾说过:

每个人都有这种第一倾向,因为它非常有意义.你想,"Bootstrap是组件.我只是将它们变成标签."但是你会遇到这样一个事实,即Bootstrap样式表只是一个很长的样式表,假设它可以触及文档的每个部分.当你突然查看标记的一些内容,确定它以便CSS无法到达它时,CSS实际上必须在它的Shadow DOM中,你必须从头开始编写该元素,这是在那里,我认为人们最初会感到非常困惑和沮丧.

这让我很奇怪,您如何使用Web Components解决这个问题?Shadow DOM模板是否有一种方法可以继承常见样式,或者您是否必须为每个单独的组件重复共享CSS?或者是其他东西?

html javascript css web-component twitter-bootstrap

14
推荐指数
2
解决办法
5403
查看次数

有没有办法将迭代器解压缩成元组?

有没有办法完成以下内容:

let v = vec![1, 2, 3];
let (a, b) = v.iter().take(2);
Run Code Online (Sandbox Code Playgroud)

这样a = 1b = 2在结束了吗?

我知道我可以使用矢量但我想要命名变量.

rust

13
推荐指数
3
解决办法
4189
查看次数

选择换行在多行字符串文字中的位置

如果我创建以下多行字符串文字:

let lit = "A -> B
           C -> D
           E -> F";
Run Code Online (Sandbox Code Playgroud)

它打印出来像这样:

A -> B
          C -> D
          E -> F
Run Code Online (Sandbox Code Playgroud)

没有惊喜.但是,如果我试试这个:

let lit = "A -> B\
           C -> D\
           E -> F";
Run Code Online (Sandbox Code Playgroud)

我明白了:

A -> BC -> DE -> F
Run Code Online (Sandbox Code Playgroud)

我想要得到的是:

A -> B
C -> D
E -> F
Run Code Online (Sandbox Code Playgroud)

但这是我提出的最好的事情:

let lit = "A -> B\n\
           C -> D\n\
           E -> F";
Run Code Online (Sandbox Code Playgroud)

或许这个:

let lit = vec!["A -> B", "C -> D", "E -> F"].connect("\n"); …
Run Code Online (Sandbox Code Playgroud)

rust

7
推荐指数
1
解决办法
723
查看次数

Shadow DOM最佳实践中的JavaScript

我无法让JavaScript在我正在定义的Shadow DOM元素中正常运行.给出以下代码:

<template id='testTemplate'>
 <div id='test'>Click to say hi</div>
 <script>
  var elem = document.querySelector('#test');
  elem.addEventListener('click', function(e) {
     alert("Hi there");
  });
</script>
</template>

<div id="testElement">Host text</div>

<script>
  var shadow = document.querySelector('#testElement').createShadowRoot();
  var template = document.querySelector('#testTemplate');
  shadow.appendChild(template.content.cloneNode(true));
</script>
Run Code Online (Sandbox Code Playgroud)

document.querySelector返回null.如果我将它包装在document.onload中它不再抛出错误,但是单击div也不会启动警报.

  1. 在这种情况下,当我的代码运行时,document.onload是否正确处理?
  2. 这是为阴影dom元素嵌入javascript的正确方法吗?

html javascript html5 web-component shadow-dom

6
推荐指数
1
解决办法
7836
查看次数

我应该如何用i32调用Vec :: with_capacity?

我有一个在堆栈上分配向量的函数.此代码不起作用:

fn my_func(n: i32) {
    let mut v = Vec::with_capacity(n);
}
Run Code Online (Sandbox Code Playgroud)

编译器说n需要成为一个usize.我认为从类型安全的角度来看,这是有道理的,但我需要n在其他需要i32调用的计算中使用.处理这个问题的正确方法是什么?

rust

5
推荐指数
1
解决办法
2466
查看次数

为调用者提供相互依赖的局部变量的所有权

这是我的问题的一个相当简单的再现:

fn str_to_u8(s: &str) -> &[u8] {
    let vector = s.chars().map(|c| c as u8).collect::<Vec<u8>>();
    let slice = vector.as_slice();
    slice
}
Run Code Online (Sandbox Code Playgroud)

编译器说它的vector寿命不够长,这是有道理的。有没有办法强制vector“移动”到slice,以便当调用者获得切片的所有权时,它也获得切片的所有权vector

rust

5
推荐指数
1
解决办法
1097
查看次数