我拼命想通过谷歌找到答案而失败了.我本人即将自己做基准测试,但认为这里的某个人可能知道答案,或者至少是一个记录在案的参考资料.
为了扩展我的问题:假设我有一个L长度为R的列表N,其中N相当大(例如,10000,1.00000,1百万或更多).假设我的列表中包含每个元素的名称.`
我想知道检索一个命名条目需要多长时间,即要做
L[[ "any_random_name" ]]
Run Code Online (Sandbox Code Playgroud)
这是时间O(N),即与列表的长度成比例,还是它O(1),即,与列表名称无关的常量.或者它可能O( log N )?
我有以下sum功能的矢量i32编译和工作正常:
fn sum_vec(s: &Vec<i64>, init: &i64) -> i64 {
(*s).iter().fold(*init, |acc, &item| acc + item)
}
Run Code Online (Sandbox Code Playgroud)
为了教自己关于Rust泛型,我想为任何T实现表单添加的 类型定义相应的泛型函数add(T, T) -> T.我试过了
use std::ops::Add;
fn sum_gen_1<T: Add>(s: &Vec<T>, init: &T) -> T {
(*s).iter().fold(*init, |acc, &item| acc + item)
}
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误
error[E0308]: mismatched types
--> src/lib.rs:4:42
|
4 | (*s).iter().fold(*init, |acc, &item| acc + item)
| ^^^^^^^^^^ expected type parameter, found associated type
|
= note: expected type `T`
found type `<T as …Run Code Online (Sandbox Code Playgroud) 我不断失去关于如何重新定义|| (“或”)或&&(“和”)二元运算符的参考。我在某处读到,必须首先做的事情importall Base。然后我尝试了
Base.||( x::MyType, y::MyType ) = dosomething( x, y )
Run Code Online (Sandbox Code Playgroud)
并且
Base.or( x::MyType, y::MyType ) = dosomething( x, y )
Run Code Online (Sandbox Code Playgroud)
但这些都不起作用。如果有人可以提供参考解释如何执行此操作的基础知识,我将不胜感激...我无法找到诸如“在 Julia 中重新定义二元运算符”之类的查询...
overloading operator-overloading binary-operators or-operator julia
我想知道如何获得Julia宏的帮助或至少找到定义它的源文件.例如,我知道有一个宏@spawnat.但如果我尝试做
> julia> help( @spawnat )
ErrorException("wrong number of arguments")
Run Code Online (Sandbox Code Playgroud)
要么
> help( spawnat )
ErrorException("spawnat not defined")
Run Code Online (Sandbox Code Playgroud)
这不是很好......
在 Python 中枚举的工作原理如下:
a_list = ['a', 'b', 'c']
for i, x in enumerate(a_list):
print(i, x)
Run Code Online (Sandbox Code Playgroud)
输出将是:
0 a
1 b
2 c
Run Code Online (Sandbox Code Playgroud)
因此, enumerate 实际上返回一个 (i, x) 形式对的生成器(几乎是一个惰性序列),其中 i 的范围超过 0, 1, 2, ...,x 是列表中按顺序排列的元素。
到目前为止,我已经提出了列表的定义,它不会产生“生成器”,但也会产生一个对的列表:
let enumerate (a_list: 'a list): (int * 'a) list =
let rec _enumerar (a_list: 'a list) (accum: (int * 'a) list) (i: int): (int * 'a) list =
match a_list with
| [] -> accum
| x::xs -> _enumerar xs ((i, x)::accum) (i+1)
in …Run Code Online (Sandbox Code Playgroud)