assert(0.1 + 0.2 != 0.3); // shall be true
Run Code Online (Sandbox Code Playgroud)
是我最喜欢的检查,语言使用本机浮点运算.
#include <cstdio>
int main()
{
printf("%d\n", (0.1 + 0.2 != 0.3));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
1
Run Code Online (Sandbox Code Playgroud)
print(0.1 + 0.2 != 0.3)
Run Code Online (Sandbox Code Playgroud)
输出:
True
Run Code Online (Sandbox Code Playgroud)
为什么D不适用?理解D使用本机浮点数.这是一个错误吗?他们是否使用某些特定的数字代表?别的什么?很混乱.
import std.stdio;
void main()
{
writeln(0.1 + 0.2 != 0.3);
}
Run Code Online (Sandbox Code Playgroud)
输出:
false
Run Code Online (Sandbox Code Playgroud)
码:
import std.stdio;
void main()
{
writeln(0.1 + 0.2 != 0.3); // …Run Code Online (Sandbox Code Playgroud) 这些最后几天我一直热切地学习D语言.作为数百万行C++代码的支持者,对我来说,这似乎是一个梦想.我们支持高性能低延迟系统,显然C++是过去十年中唯一的选择.现在,我看到D.
所以,我的问题非常明显.我可以开始考虑将商业软件产品迁移到D语言吗?是否有从头开始在D上编写此类迁移或现有大型商业软件产品的示例?
现在如何投资这种语言是否安全?我们有生产质量的编译器和调试器吗?我们可以假设他们会得到支持和发展吗?
如果您有从C++到D的迁移经验,那么很高兴听到您的意见.
PS.DI意味着D2
谢谢
当我需要在列表中添加几个相同的项目时,我使用list.extend:
a = ['a', 'b', 'c']
a.extend(['d']*3)
Run Code Online (Sandbox Code Playgroud)
结果
['a', 'b', 'c', 'd', 'd', 'd']
Run Code Online (Sandbox Code Playgroud)
但是,如何与列表理解类似?
a = [['a',2], ['b',2], ['c',1]]
[[x[0]]*x[1] for x in a]
Run Code Online (Sandbox Code Playgroud)
结果
[['a', 'a'], ['b', 'b'], ['c']]
Run Code Online (Sandbox Code Playgroud)
但我需要这个
['a', 'a', 'b', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
只是一个简单的问题.我想知道在标准库(或在Jane Street的核心或电池中)中定义的OCaml中是否存在中缀函数组合运算符,就像Haskell中的(.)函数一样,它为我们节省了很多括号,因为我们可以编写(f . g . h) x而不是不太吸引人f (g (h x))).
谢谢大家.
此问题非常常见:对象应在发生某些事件时通知其所有订户.在C++中我们可以使用boost::signals或其他东西.但是如何用Go语言做到这一点?很高兴看到一些工作代码示例,其中有几个对象订阅了发布者并处理了通知.
谢谢
我猜,问题很常见.比方说,我们有一个源文件,希望用另一个字符串替换一些字符串.
通常,我使用以下命令:
:%s/test/testValue/gc
Run Code Online (Sandbox Code Playgroud)
但是,如果字符串很长并且我们只需要触摸它怎么办?键入类似的东西很无聊:
%s/someLongAndDirtyString/somelongAndDirtystring/gc
Run Code Online (Sandbox Code Playgroud)
是否可以将光标放在someLongAndDirtyString单词上,按下一些魔术键并在最后一行中获得以下内容?
%s/someLongAndDirtyString/someLongAndDirtyString/gc
Run Code Online (Sandbox Code Playgroud)
然后我们可以稍微更改新字符串并继续替换.
当然,这只是一个想法.请为我提供进行此类替换的最佳方式.
谢谢
比方说,有file.txt一个回购,有两个人正在攻击它.其中一个移动file.txt到另一个文件夹,hg mv并立即将其推入回购.当同事决定推出自己的补足措施时,Mercurial是否有可能自动将更改从原始更改file.txt为移动file.txt?
我太乐观了吗?
type foo = A of int * int | B of (int * int)
Run Code Online (Sandbox Code Playgroud)
int * int和(int * int)那里有什么区别?我看到的唯一区别是模式匹配:
let test_foo = function
| A (f, s) -> (f, s)
| B b -> b
Run Code Online (Sandbox Code Playgroud)
它只是一种语法糖吗?你如何选择使用哪一个?这两种形式之间是否有任何性能差异?
看看enum:
enum TestEnum
{
First = 1,
Second = 2,
Unknown = 3,
TestTestTest = 100,
Zero = 0,
Foo = 123,
}
Run Code Online (Sandbox Code Playgroud)
我如何利用Vim的全部功能重新格式化?
enum TestEnum
{
First = 1,
Second = 2,
Unknown = 3,
TestTestTest = 100,
Zero = 0,
Foo = 123,
}
Run Code Online (Sandbox Code Playgroud)
就个人而言,我正在逐行移动和标签.它与我在任何常规编辑器中所做的相同.怎么做正确的方法?
班级成员也一样:
class Foo
{
SuperFoo foo1;
RegularFoo foo2;
SuperiorFoo foo3;
YetAnotherFoo foo4;
Bar bar;
}
Run Code Online (Sandbox Code Playgroud)
喜欢的东西
class Foo
{
SuperFoo foo1;
RegularFoo foo2;
SuperiorFoo foo3;
YetAnotherFoo foo4;
Bar bar;
}
Run Code Online (Sandbox Code Playgroud)
谢谢