小编Mas*_*tic的帖子

为什么要使用params关键字?

我知道这是一个基本问题,但我找不到答案.

为什么要用它?如果你编写一个函数或一个使用它的方法,当你删除它时代码仍然可以正常工作,100%没有它.例如:

使用params:

static public int addTwoEach(params int[] args)
{
    int sum = 0;
    foreach (var item in args)
        sum += item + 2;
    return sum;
}
Run Code Online (Sandbox Code Playgroud)

没有参数:

static public int addTwoEach(int[] args)
{
    int sum = 0;
    foreach (var item in args)
       sum += item + 2;
    return sum;
}
Run Code Online (Sandbox Code Playgroud)

c# variadic parameter-passing variadic-functions params

326
推荐指数
7
解决办法
18万
查看次数

为什么ReSharper想要将'var'用于一切?

我刚刚开始在Visual Studio中使用ReSharper(在关于SO的许多建议之后).为了试一试,我打开了一个最近的ASP.NET MVC项目.我注意到它提出的第一个也是最常见的事情之一是将大多数/所有我的显式声明var改为.例如:

//From This:
MyObject foo = DB.MyObjects.SingleOrDefault(w => w.Id == 1);
//To This:
var foo = DB.MyObjects.SingleOrDefault(w => w.Id == 1);
Run Code Online (Sandbox Code Playgroud)

等,即使采用简单的类型,如int,bool

为什么要推荐这个?我不是来自计算机科学或.NET背景,最近"陷入".NET开发,所以我真的很想了解正在发生的事情以及它是否有益.

.net c# resharper var visual-studio

207
推荐指数
15
解决办法
5万
查看次数

如何定位所有控件(WPF样式)

我可以指定适用于所有元素的样式吗?我试过了

<Style TargetType="Control">
    <Setter Property="Margin" Value="0,5" />
</Style>
Run Code Online (Sandbox Code Playgroud)

但它没有做任何事情

wpf user-interface styles

81
推荐指数
2
解决办法
3万
查看次数

Bjarne对这个ADL的例子是错误的,还是我有编译器错误?

我正在阅读C++编程语言,第4版(由Bjarne Stroustrup撰写)关于.这是引用(26.3.6,Overaggressive ADL):

依赖于参数的查找(通常称为ADL)对于避免冗长非常有用(14.2.4).例如:

#include <iostream>

int main()
{
    std::cout << "Hello, world" << endl; // OK because of ADL
}
Run Code Online (Sandbox Code Playgroud)

如果没有依赖于参数的查找,则endl无法找到操纵器.实际上,编译器注意到第一个参数<<ostream定义的std.因此,寻找endlstd和发现它(中<iostream>).

这是编译器产生的结果(C++ 11模式):

prog.cpp: In function ‘int main()’:
prog.cpp:4:36: error: ‘endl’ was not declared in this scope
 std::cout << "Hello, world" << endl;
                                ^
Run Code Online (Sandbox Code Playgroud)

这是编译器或书中的错误.标准说什么?

更新:

我需要澄清一下.我知道正确的答案是使用std::endl.问题是关于书中的文字.正如Lachlan Easton所说,这不仅仅是一个错字.整段是(可能)错了.如果这本书是由另一位(鲜为人知的)作者写的,我可以接受这种错误,但我(并且仍然)怀疑,因为它是由Bjarne写的.

c++ argument-dependent-lookup c++11

80
推荐指数
5
解决办法
3382
查看次数

文本或字节串

美好的一天.

我现在讨厌Haskell的一件事是用于处理字符串的数量.

首先我使用了原生的Haskell [Char]字符串,但是当我尝试开始使用hackage库时,完全失去了无休止的转换.每个包似乎都使用不同的字符串实现,有些采用自己手工制作的东西.

接下来我用Data.Text字符串和OverloadedStrings扩展名重写了我的代码,我选择了Text因为它有更广泛的功能集,但似乎很多项目更喜欢ByteString.
有人可以简短推理为什么要使用其中一个?

PS:顺便想怎么转换TextByteString

无法匹配期望类型 Data.ByteString.Lazy.Internal.ByteString 对抗推断类型文本 预期类型:IO Data.ByteString.Lazy.Internal.ByteString推断类型:IO文本

我试过encodeUtf8Data.Text.Encoding,但没有运气:

无法匹配期望类型 Data.ByteString.Lazy.Internal.ByteString 对抗推断类型Data.ByteString.Internal.ByteString

UPD:

谢谢你的回复,*Chunks的善良看起来像是要走的路,但我对结果感到有些震惊,我原来的功能看起来像这样:

htmlToItems :: Text -> [Item]
htmlToItems =
    getItems . parseTags . convertFuzzy Discard "CP1251" "UTF8"
Run Code Online (Sandbox Code Playgroud)

现在成了:

htmlToItems :: Text -> [Item]
htmlToItems =
    getItems . parseTags . fromLazyBS . convertFuzzy Discard "CP1251" "UTF8" . toLazyBS
    where
      toLazyBS t = fromChunks [encodeUtf8 t]
      fromLazyBS …
Run Code Online (Sandbox Code Playgroud)

string text haskell

76
推荐指数
3
解决办法
1万
查看次数

启动失败二进制文件在Windows中找不到Eclipse for C

我安装了Eclipse CDT插件以及以下软件包:

  1. MinSys
  2. MinGW的

我还在PATH环境变量中添加了bin的路径.即使这样,我也无法在Eclipse中编译和运行任何示例程序.
我怎样才能解决这个问题?感谢你的关心.

c eclipse windows

57
推荐指数
5
解决办法
24万
查看次数

非Qt基类

我正在使用Qt(我是新手)4.8.2,使用Visual Studio,我创建了一个名为"Contact"的基类.我不希望这个类是Qt独占的,所以我的目的是创建另一个类"QContact",它将继承"Contact",而QObject则处理所有与Qt相关的业务,例如Q_OBJECT宏等.

不幸的是,当我继承时,构建失败了,说:

moc_QContact.cpp(53): error C2039: 'staticMetaObject' : is not a member of 'Contact'
moc_QContact.cpp(75): error C2039: 'qt_metacast' : is not a member of 'Contact'
moc_QContact.cpp(80): error C2039: 'qt_metacall' : is not a member of 'Contact'
Run Code Online (Sandbox Code Playgroud)

我在网上做了一些研究,发现你不能从非Qt类中派生出一个Qt类.所以要解决它,"联系"可以继承"QObject"(我试过,它有效).但这样做会使它成为Qt独有的,这是我的问题.

所以我要问的是:如何为Qt类创建非Qt基类?

谢谢.

c++ oop qt

44
推荐指数
1
解决办法
1万
查看次数

如何使用Dispatcher.Invoke返回值?

任何人都知道如何从中返回值Dispatcher.Invoke?我想返回ComboBox的选定索引.

谢谢!

wpf return invoke dispatcher

30
推荐指数
2
解决办法
2万
查看次数

我升级了cabal-install吗?

我刚从它的官方网站安装了Haskell .之后,按照它的快速入门教程.

我跑:

cabal update
Run Code Online (Sandbox Code Playgroud)

其中显示了此消息:

Downloading the latest package list from hackage.haskell.org
Note: there is a new version of cabal-install available.
To upgrade, run: cabal install cabal-install
Run Code Online (Sandbox Code Playgroud)

我跑:

cabal install cabal-install
Run Code Online (Sandbox Code Playgroud)

并检查更新是否成功

cabal update
Run Code Online (Sandbox Code Playgroud)

结果,它从一开始就向我显示了相同的消息:

Downloading the latest package list from hackage.haskell.org
Note: there is a new version of cabal-install available.
To upgrade, run: cabal install cabal-install
Run Code Online (Sandbox Code Playgroud)

那么,我是否升级了cabal-install?如何查看我的cabal的版本?

重要提示:我正在使用64位版本的Mac OS X.

macos haskell cabal

30
推荐指数
4
解决办法
7913
查看次数

是否可以在Haskell中编程和检查不变量?

当我编写算法时,我通常会在注释中写下不变量.

例如,一个函数可能返回一个有序列表,另一个函数则期望列出一个列表.
我知道定理证明存在,但我没有使用它们的经验.

我也相信智能编译器[sic!]可以利用它们来优化程序.
那么,是否有可能写下不变量并让编译器检查它们?

haskell types invariants theorem-proving

29
推荐指数
3
解决办法
3277
查看次数