Prelude> let a = 3
Prelude> :sprint a
a = _
Prelude> let c = "ab"
Prelude> :sprint c
c = _
Run Code Online (Sandbox Code Playgroud)
它为什么总是打印_?我不太了解:sprint命令的语义.
我写了一个测试程序:
#include <iostream>
#include <type_traits>
using namespace std;
template<class T>
void f(T&& t)
{
cout<<is_const<T>()<<endl;
//++t;
}
int main() {
const int i=0;
f(i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它输出"0",显示T不是常量!这很奇怪.然后我修改了f:
template<class T>
void f(T&& t)
{
cout<<is_const<T>()<<endl;
++t;
}
Run Code Online (Sandbox Code Playgroud)
然后是编译器错误,说我们正在修改只读t.那么t可修改与否?在我的计划中有任何错误的假设吗?
Invoke-Expression 将返回被调用的命令的所有文本.
但是,如何获得系统返回值是否已成功执行此命令或失败?在CMD中,我可以%errorlevel%用来获取外部命令执行状态.PowerShell怎么样?
似乎AppContext只有一个叫做的属性BaseDirectory.但是Environment类似乎有更多的属性和方法.
所以AppContext被替换Environment类呢?
我使用文本编辑器打开.sln文件,它看起来像一个树结构,但它不是xml格式.
你知道它的格式是什么,我们可以使用C#来处理它,就像处理xml一样方便吗?
我想知道,如果一个字符串包含的一个abc,def,xyz等我能做到这一点,如:
$a.Contains("abc") -or $a.Contains("def") -or $a.Contains("xyz")
Run Code Online (Sandbox Code Playgroud)
它确实有效,但如果这个子字符串列表发生变化,我必须更改代码,并且由于$a多次扫描,性能很差.
只需一个函数调用,有更有效的方法吗?
我们知道在F#中,seq是懒惰的评估.我的问题是,如果我有一个数量有限的seq,如何将其转换为包含其所有值的评估数据类型?
> seq { for i in 1 .. 10 do yield i * i };;
val it : seq<int> = seq [1; 4; 9; 16; ...]
Run Code Online (Sandbox Code Playgroud)
非常感谢.
刚开始使用Haskell,据说除了IO包外,Haskell中的所有内容都是“不可变的”。因此,当我将名称绑定到某物时,它总是不可变的?问题,如下:
Prelude> let removeLower x=[c|c<-x, c `elem` ['A'..'Z']]
Prelude> removeLower "aseruiiUIUIdkf"
"UIUI"
Run Code Online (Sandbox Code Playgroud)
所以在这里:
1. “removeLower" is an immutable? Even it's a function object?
But I can still use "let" to assign something else to this name.
2. inside the function "c<-x" seems that "c" is a variable.
It is assigned by list x's values.
Run Code Online (Sandbox Code Playgroud)
我使用的是 C 语言中的“变量”这个词,不知道 Haskell 是如何命名它的所有名称的?
谢谢。
我从下面得到了以下脚本:
$private:a = 1
Function test {
"variable a contains $a"
$a = 2
"variable a contains $a"
}
test
Run Code Online (Sandbox Code Playgroud)
打印2.没问题.如果我删除"私人",如下所示:
$a = 1
Function test {
"variable a contains $a"
$a = 2
"variable a contains $a"
}
Run Code Online (Sandbox Code Playgroud)
仍然打印"2".似乎没有区别.您能否快速提供"私人"范围如何影响结果的样本?
谢谢.
Haskell有"elem"谓词来表达:
Prelude> 5 `elem` [2,4..10]
False
Run Code Online (Sandbox Code Playgroud)
在F#中,如何方便地判断值是在列表,数组,seq或map还是字典中?