小编Mic*_*rus的帖子

foldr与foldl(或foldl')的含义

首先,我正在阅读的真实世界Haskell表示永远不会使用foldl而是使用foldl'.所以我相信它.

但我对什么时候使用foldrvs. 朦胧foldl'.虽然我可以看到他们如何以不同的方式摆放在我面前的结构,但是当"哪个更好"时,我太愚蠢了.我想在我看来似乎并不重要,因为它们都产生相同的答案(不是吗?).事实上,我以前使用这个结构的经验来自Ruby inject和Clojure reduce,它们似乎没有"左"和"右"版本.(附带问题:他们使用哪个版本?)

任何有助于像我这样的智能挑战的洞察力都会非常感激!

recursion haskell functional-programming fold

150
推荐指数
7
解决办法
3万
查看次数

从.NET/C#站点下载图像

我想从网站下载图像.我正在使用的代码在图像可用时工作正常.如果图像不可用则会产生问题.如何验证图像的可用性?

码:

方法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)

.net c# streaming image

62
推荐指数
3
解决办法
14万
查看次数

对Enumerable <T>中的所有元素执行特定操作

我有一个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; }),但它没有打印任何东西.

linq enumerable c#-3.0

47
推荐指数
5
解决办法
4万
查看次数

45
推荐指数
5
解决办法
8万
查看次数

如何更改按钮的边框颜色?

这是我的代码:

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)

但是,我看不到边框颜色更改属性等.

我用这个代码,因为我有很多按钮的窗体上,任何这些按钮的属性可以改变,所以而不是单独叫出来,我只是做了该代码可能处理它们.

是否有类似于上面的代码,这将允许我更改按钮的边框颜色?

c# winforms

25
推荐指数
3
解决办法
8万
查看次数

如何使用new传递构造函数参数

我试图将参数传递给构造函数,但同时创建一个像这样的对象数组.我使用以下代码到达那里:

PointPtr centroids = new Point[k](5);

好吧,这不是语法错误,但它没有编译.我真的不想将"5"硬编码为Point的默认构造函数.对我应该怎么做有什么想法?谢谢!

顺便说一句,我typedef Point *PointPtr已经在其他地方做过了.

对不起,如果标题不准确.我不知道如何总结这一点.

c++

11
推荐指数
3
解决办法
7611
查看次数

使用(declare(type ...))但仍然具有'安全'功能

是否可以(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并在进行类型检查后调用它,但我想知道这是否是最优雅的方式.

common-lisp compiler-optimization

6
推荐指数
1
解决办法
366
查看次数

默认(用户定义的)构造函数和默认参数的构造函数之间的区别?

默认的用户定义构造函数之间是否有任何区别

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

具体来说,我想知道,就语言而言,这两个构造函数是否为两者都播放完全相同的默认构造函数,或者如果类的属性之间存在细微差别?

换句话说,是一个构造函数,它的所有参数的默认值都是默认的构造函数吗?

c++ constructor default-constructor language-lawyer

6
推荐指数
1
解决办法
1515
查看次数

Eclipse CDT Indigo CLOCKS_PER_SEC无法解决问题

我不知道这是一个错误,或者我是唯一一个面对这个,

在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位上.这是一个错误或一些设置搞砸了(索引器?)?

c c++ eclipse-cdt

5
推荐指数
2
解决办法
6810
查看次数

通过 Clozure CL 与 Windows API 交互

我想通过 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)

获取/设置正确的方法签名

以下是我认为调用它的一般步骤,但我不确定每个步骤是如何进行的:

  • 检索 CCL 为此函数生成的签名,以便我知道如何调用它。
  • 使用 为其提供不同的函数签名external-call
  • 定义一个 FFI 结构或类来保存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)

common-lisp ffi ccl

5
推荐指数
0
解决办法
531
查看次数