在 Rust 中,我注意到除了两种语句之外,一切都是表达式。添加的每个表达式都;将成为一个语句。Rust 的语法希望语句遵循其他语句。
那么为什么我们不在/ “表达式”;的末尾添加呢?这也是一个表达式,那么我们为什么不这样做:ifelse
if true {
println!("true");
} else {
println!("false");
};
Run Code Online (Sandbox Code Playgroud) 我有个问题。使用 Dart 时,我无法检查 2 个数组是否相等。(在其他语言中,我可以使用 == 来实现)事实上,我可以使用 String 或 number 来实现 == 。
List arr1 = [1,2,3];
List arr2 = [1,2,3];
if (arr1 == arr2) {
print("equal");
} else {
print("not equal");
}
Run Code Online (Sandbox Code Playgroud)
// 输出:不相等。
所以我想知道这有什么意义。我的意思是,如果 == 仅适用于字符串或数字的情况(如果比较的值相同),我们该怎么办。如果我想检查列表、映射等的比较(相等),我该怎么做。它只适用于字符串和数字。
我有这个
var nlist = [4,2,1,5];
var compare = (a, b) => a.compareTo(b);
nlist.sort(compare);
print(nlist); // [1,2,4,5]
Run Code Online (Sandbox Code Playgroud)
在这里(其中我改变了(b, a)对(a, b))
var nlist = [4,2,1,5]
var compare = (b, a) => a.compareTo(b);
nlist.sort(compare);
print(nlist); // [5,4,2,1]
Run Code Online (Sandbox Code Playgroud)
为什么这个小修改会从升序变为降序?
在Haskell中,我知道如果我定义这样的函数,add x y = x + y
那么我就这样调用add e1 e2.该调用等同于(add e1) e2
这意味着应用于add一个参数会e1产生一个新函数,然后将该函数应用于第二个参数e2.
这就是我在Haskell中无法理解的.在其他语言(如Dart)中,为了完成上述任务,我会这样做
add(x) {
return (y) => x + y;
}
Run Code Online (Sandbox Code Playgroud)
我必须明确return一个函数.那么"产生一个新函数然后应用于第二个参数"的部分是否会在Haskell中自动执行?如果是这样,那个"隐藏"功能是什么样的?或者我只是想念哈斯克尔?
作为标题,假设我必须在 vim 中运行此命令<command> <argument>。
在我的.vimrc我设置let mapleader = ,
所以在正常模式下,如果我输入,ab然后 vim 将运行 command <command> ab。如果我输入,,xyz那么 vim 将运行 command <command> xyz。
怎么做?
dart ×2
expression ×1
function ×1
haskell ×1
if-statement ×1
rust ×1
sorting ×1
syntax ×1
vim ×1