首先,我正在阅读的真实世界Haskell表示永远不会使用foldl而是使用foldl'.所以我相信它.
但我对什么时候使用foldrvs. 朦胧foldl'.虽然我可以看到他们如何以不同的方式摆放在我面前的结构,但是当"哪个更好"时,我太愚蠢了.我想在我看来似乎并不重要,因为它们都产生相同的答案(不是吗?).事实上,我以前使用这个结构的经验来自Ruby inject和Clojure reduce,它们似乎没有"左"和"右"版本.(附带问题:他们使用哪个版本?)
任何有助于像我这样的智能挑战的洞察力都会非常感激!
我想从网站下载图像.我正在使用的代码在图像可用时工作正常.如果图像不可用则会产生问题.如何验证图像的可用性?
码:
方法1:
WebRequest requestPic = WebRequest.Create(imageUrl);
WebResponse responsePic = requestPic.GetResponse();
Image webImage = Image.FromStream(responsePic.GetResponseStream()); // Error
webImage.Save("D:\\Images\\Book\\" + fileName + ".jpg");
Run Code Online (Sandbox Code Playgroud)
方法2:
WebClient client = new WebClient();
Stream stream = client.OpenRead(imageUrl);
bitmap = new Bitmap(stream); // Error : Parameter is not valid.
stream.Flush();
stream.Close();
client.dispose();
if (bitmap != null)
{
bitmap.Save("D:\\Images\\" + fileName + ".jpg");
}
Run Code Online (Sandbox Code Playgroud)
编辑:
Stream有以下声明:
Length '((System.Net.ConnectStream)(str)).Length' threw an exception of type 'System.NotSupportedException' long {System.NotSupportedException}
Position '((System.Net.ConnectStream)(str)).Position' threw an exception of type 'System.NotSupportedException' long {System.NotSupportedException}
ReadTimeout …Run Code Online (Sandbox Code Playgroud) 我有一个Enumerable<T>并且正在寻找一种方法,允许我为每个元素执行一个动作,有点像Select然后是副作用.就像是:
string[] Names = ...;
Names.each(s => Console.Writeline(s));
Run Code Online (Sandbox Code Playgroud)
要么
Names.each(s => GenHTMLOutput(s));
// (where GenHTMLOutput cannot for some reason receive the enumerable itself as a parameter)
Run Code Online (Sandbox Code Playgroud)
我试过了Select(s=> { Console.WriteLine(s); return s; }),但它没有打印任何东西.
这是我的代码:
buttonName = "btn" + y.ToString() + x.ToString();
Control btn = this.Controls.Find(buttonName, true)[0] as Control;
btn.BackColor = System.Drawing.Color.Blue;
Run Code Online (Sandbox Code Playgroud)
但是,我看不到边框颜色更改属性等.
我用这个代码,因为我有很多按钮的窗体上,任何这些按钮的属性可以改变,所以而不是单独叫出来,我只是做了该代码可能处理它们.
是否有类似于上面的代码,这将允许我更改按钮的边框颜色?
我试图将参数传递给构造函数,但同时创建一个像这样的对象数组.我使用以下代码到达那里:
PointPtr centroids = new Point[k](5);
好吧,这不是语法错误,但它没有编译.我真的不想将"5"硬编码为Point的默认构造函数.对我应该怎么做有什么想法?谢谢!
顺便说一句,我typedef Point *PointPtr已经在其他地方做过了.
对不起,如果标题不准确.我不知道如何总结这一点.
是否可以(declare (type ...))在函数中使用声明,还可以对函数参数执行类型检查,以便生成更快但仍然安全的代码?
例如,
(defun add (x y)
(declare (type fixnum x y))
(the fixnum x y))
Run Code Online (Sandbox Code Playgroud)
当被调用时(add 1 "a")会导致未定义的行为,所以我最好将其修改为
(defun add (x y)
(declare (type fixnum x y))
(check-type x fixnum)
(check-type y fixnum)
(the fixnum x y))
Run Code Online (Sandbox Code Playgroud)
但我担心编译器可以假设check-type总是通过,因此省略了检查.
所以我的问题是,上面的例子是错误的,因为我期望它,其次,是否有任何常见的习惯用法*用于实现优化代码的类型安全?
*)我可以想象,例如,使用优化的lambda并在进行类型检查后调用它,但我想知道这是否是最优雅的方式.
默认的用户定义构造函数之间是否有任何区别
class Simple
{
public:
Simple() {}
};
Run Code Online (Sandbox Code Playgroud)
和一个用户定义的构造函数,它接受多个参数,但每个参数都有默认值
class WithDefaults
{
public:
WithDefaults(int i = 1) {}
};
Run Code Online (Sandbox Code Playgroud)
除此之外WithDefaults还可以构造一个明确的值i?
具体来说,我想知道,就语言而言,这两个构造函数是否为两者都播放完全相同的默认构造函数,或者如果类的属性之间存在细微差别?
换句话说,是一个构造函数,它的所有参数的默认值都是默认的构造函数吗?
我不知道这是一个错误,或者我是唯一一个面对这个,
在Eclipse CDT indigo中,创建一个新的C++可执行项目并在C++源文件夹中创建一个CPP文件.ie src/test.cpp
#include<iostream>
#include<ctime>
using namespace std;
int main()
{
clock_t strt = clock();
int i = 2;
clock_t end = clock();
cout<<(end-strt)*1000.0f/CLOCKS_PER_SEC;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在看到CLOCKS_PER_SEC未解析,但项目编译成功并且运行正常.我在ubuntu 10.10 64位上.这是一个错误或一些设置搞砸了(索引器?)?
我想通过 Clozure CL 的外部函数接口调用 Windows API 函数,但我遇到了一些问题,因为我找到的文档相当稀缺。
作为一个足够丰富的示例,我尝试调用SHGetKnownFolderPath。它的签名是
HRESULT SHGetKnownFolderPath(const GUID &rfid, DWORD dwFlags,
HANDLE hToken, PWSTR *ppszPath );
Run Code Online (Sandbox Code Playgroud)
我可以使用以下命令来获取函数的入口点:
(open-shared-library "shell32.dll")
> #<SHLIB SHELL32.dll #x1234>
(external "SHGetKnownFolderPath")
> #<EXTERNAL-ENTRY-POINT "SHGetKnownFolderPath" (#x12345) SHELL32.dll #x123456>
Run Code Online (Sandbox Code Playgroud)
以下是我认为调用它的一般步骤,但我不确定每个步骤是如何进行的:
external-call。GUID(第一个参数)viadef-foreign-type或相关构造。CoTaskMemFree来释放 指向的内存*ppszPath。我对最终代码的一般形式的猜测是
(defun get-known-folder (guid)
(let ((ffi-guid (allocate-ffi-memory-from-guid guid))
(ffi-path ffi-version-of-nil)
(path nil))
(external-call "SHGetKnownFolderPath" ...) ;; Pass ffi-guid and ffi-path …Run Code Online (Sandbox Code Playgroud) c# ×3
c++ ×3
.net ×2
common-lisp ×2
browser ×1
c ×1
c#-3.0 ×1
ccl ×1
constructor ×1
csv ×1
eclipse-cdt ×1
enumerable ×1
ffi ×1
fold ×1
haskell ×1
image ×1
linq ×1
recursion ×1
streaming ×1
winforms ×1