好吧,我开始明白F#能够管理引用(某种类似C++的引用).这使得有可能改变函数中传递的参数值,并使程序员能够返回多个值.不过这是我需要知道的:
Ref关键字:该关键字ref用于从值创建对推断类型的值的引用.所以
let myref = ref 10
Run Code Online (Sandbox Code Playgroud)
这意味着F#将创建一个类型的对象Ref<int>(在可变字段中)我的int 10.
好.所以我假设它ref用于创建该Ref<'a>类型的实例.这是对的吗?
访问值:为了访问存储在引用中的值,我可以这样做:
let myref = ref 10
let myval = myref.Value
let myval2 = !myref
Run Code Online (Sandbox Code Playgroud)
虽然:=操作员只是让我编辑这样的值:
let myref = ref 10
myref.Value <- 30
myref := 40
Run Code Online (Sandbox Code Playgroud)
所以!(Bang)取消引用我的参考.并:=编辑它.我想这也是正确的.
&运营商:这家运营商做什么?它是否适用于参考类型?不,我想它必须应用于一个可变值,这会返回什么?参考资料?地址?如果使用交互式:
let mutable mutvar = 10;;
&a;;
Run Code Online (Sandbox Code Playgroud)
最后一行抛出错误,所以我不明白&操作符是什么.
ByRef:怎么样byref?这对我来说非常重要,但我意识到我不理解它.我知道它用于参数传递的功能.当他想要传递的值可以被编辑时,人们会使用byref(这有点违背了函数式语言的哲学,但f#不仅仅是这个).考虑以下:
let myfunc (x: int byref) =
x <- x + 10
Run Code Online (Sandbox Code Playgroud)
这很奇怪.我知道如果你有一个引用let myref …
我有一个关于System.ThreadingMicrosoft .NET命名空间的问题.在此命名空间中,定义了许多类以帮助我管理线程.好吧,我有一个问题,但我不知道该用什么,MSDN含糊不清,我仍然不知道哪些类做了什么.特别是,我的问题涉及同步.
我有一定数量的线程(考虑N个线程).在某个时刻,线程必须停止并等待至少一个其他线程做某事.一旦N-1个线程中的一个完成了某个任务,该线程就会通知并且已停止的线程将能够继续.
所以这只是一个同步问题:线程必须等待发出信号,这就是全部.
在System.Threading提供许多类以处理同步问题.有WaitHandle(s),有AutoResetEvent(s),有ManualResetEvent(s)等...
我应该使用哪一个?
我的问题是:任何人都可以总结一下我应该用什么课来解决我的问题?您能告诉我们这些课程或其他课程之间最重要的区别吗?
问题的关键是,我没有带真正理解类负责在同步事:有什么区别,例如,与WaitHandle和AutoResetEvent或ManualResetEvent?
为了处理许多线程问题,.net提供了lock功能和Monitor类.这对夫妇对我的需求有益吗?
谢谢
我知道正在接近提升属性树,并发现它是c ++编程的boost库的一个很好的特性.
好吧,我有一个疑问?如何使用迭代器或类似方法迭代属性树?
在参考中,只有一个浏览树的例子:
BOOST_FOREACH
Run Code Online (Sandbox Code Playgroud)
但仅此而已吗?像stl一样的容器?谈到代码质量,这将是一个更好的解决方案....
我正在寻找像Android ADB这样的工具来调试iOS设备.我找到了iOS仪器,这是XCode的一个工具,可以在移动iOS设备上调试应用程序.如果您必须测试应用程序或其他一些开源应用程序,此工具很有用.
我需要测试iOS设备,而不是我的应用程序,因此我正在寻找类似Android设备的Android ADB.
有类似的东西吗?
在F#类和记录的所有示例中,我看到记录通过new关键字或仅通过类型名称实例化/创建类.
例如,如果我有这个记录:
type MyRecord = {field1: int; field2:int}
let myvar = {new MyRecord with field1 = 3 and field2 = 3}
let myvar2 = {MyRecord with field1 = 1 and field2 = 2}
let myvar3 = {field1 = 34; field2 = 23}
Run Code Online (Sandbox Code Playgroud)
他们似乎都是一样的.这个例子也是一样的:
type MyClass(x: int) =
let mutable xx = x
let myvar = MyClass(12)
let myvar2 = new MyClassw(234)
Run Code Online (Sandbox Code Playgroud)
那么新的东西是什么?谢谢
啊......我知道关于课程的新问题有答案,但没有提及记录.此外,我不明白为什么在构建课程时新的应该是一个可选的和无关紧要的关键工作?是否有可能在课程中使用new或不使用它确实没有变化?
我安装了IIS 7.0,并且有一个带有.svc服务的.net应用程序.
我想将一个文件指向应用程序指向的虚拟目录(请注意我在应用程序中转换了我的虚拟目录).
但是,当我尝试打开一个文件时,在.net-verse中使用一般的api调用,并且不指定根(完整)路径而是相对路径,当找不到资源时,我最终会出错.
如何获取应用的物理路径?
请注意,这是一个Web应用程序.它无法使用该Request对象,因为它需要从我的应用程序托管的Web服务进行此调用.
我知道如何使用XercesDOMParser从xml文件创建一个完整的dom:
xercesc::XercesDOMParser parser = new xercesc::XercesDOMParser();
parser->parse(path_to_my_file);
parser->getDocument(); // From here on I can access all nodes and do whatever i want
Run Code Online (Sandbox Code Playgroud)
嗯,这有用......但是如果我想解析一个字符串怎么办?就像是
std::string myxml = "<root>...</root>";
xercesc::XercesDOMParser parser = new xercesc::XercesDOMParser();
parser->parse(myxml);
parser->getDocument(); // From here on I can access all nodes and do whatever i want
Run Code Online (Sandbox Code Playgroud)
我正在使用版本3.在里面AbstractDOMParser我看到了解析方法及其重载版本,只解析文件.
如何从字符串中解析?
I want to do something like the following:
delay( 2500 )
.then( function () { console.log( "Step 1 done" ) } )
.then( delay( 7500 ) )
.then( function () { console.log( "Step 2 done" ) } );
Run Code Online (Sandbox Code Playgroud)
So implementation of delay has been demonstrated many times before:
function delay( ms ) {
var deferred = Q.defer();
setTimeout( deferred.resolve, ms );
return deferred.promise;
}
Run Code Online (Sandbox Code Playgroud)
But if I run the above in node.js I get:
... delay of 2500ms
Step 1 …Run Code Online (Sandbox Code Playgroud) R Markdown是文档创作的好工具.它可以在R Markdwon目录中使用Latex语句.但是当我尝试插入TikZ图片时,我对如何在其中添加前导码感到迷茫\usepackage{tikz},因此编译将失败.
示例代码:
---
title: "R Markdown with tikz picture"
author: "Me"
date: "January 10, 2015"
output: beamer_presentation
---
## TikZ picture
- Here is a TikZ picutre
\begin{tikzpicture}
\draw (0,0) circle (2cm);
\end{tikzpicture}
Run Code Online (Sandbox Code Playgroud)
因为实际上它会生成一个乳胶文件,所以只需将它添加到乳胶然后将其编译为pdf,但我希望我可以在R Markdown中执行此操作,然后单击"编织PDF"按钮直接生成pdf文档.
在为类定义复制构造函数时,是否必须显式定义默认构造函数?请说明原因.
例如:
class A
{
int i;
public:
A(A& a)
{
i = a.i; //Ok this is corrected....
}
A() { } //Is this required if we write the above copy constructor??
};
Run Code Online (Sandbox Code Playgroud)
另外,如果我们为复制构造函数以外的类定义任何其他参数化构造函数,我们是否还必须定义默认构造函数?考虑上面没有复制构造函数的代码并替换它
A(int z)
{
z.i = 10;
}
Run Code Online (Sandbox Code Playgroud)
Alrite ....看到答案后,我写了下面的程序.
#include <iostream>
using namespace std;
class X
{
int i;
public:
//X();
X(int ii);
void print();
};
//X::X() { }
X::X(int ii)
{
i = ii;
}
void X::print()
{
cout<<"i = "<<i<<endl;
}
int main(void)
{ …Run Code Online (Sandbox Code Playgroud)