小编Bro*_*ses的帖子

null + true是一个字符串怎么样?

既然true不是字符串类型,字符串怎么样null + true

string s = true;  //Cannot implicitly convert type 'bool' to 'string'   
bool b = null + true; //Cannot implicitly convert type 'string' to 'bool'
Run Code Online (Sandbox Code Playgroud)

这背后的原因是什么?

.net c# string null types

112
推荐指数
7
解决办法
5323
查看次数

如果迭代器为空,Python迭代器中下一个元素的默认值?

我有一个对象列表,我想找到第一个给定方法为某些输入值返回true的对象.这在Python中相对容易:

pattern = next(p for p in pattern_list if p.method(input))
Run Code Online (Sandbox Code Playgroud)

但是,在我的应用程序中,通常不存在这样pp.method(input)情况,因此这将引发StopIteration异常.有没有一种惯用的方法来处理这个而不用编写try/catch块?

特别是,似乎用类似if pattern is not None条件的东西处理这种情况会更干净,所以我想知道是否有一种方法可以扩展我的定义,pattern以便None在迭代器为空时提供一个值 - 或者如果还有更多Pythonic方式处理整体问题!

python iterator

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

iPhone/iOS - 如何使用"ShareKit"仅发布到Facebook或仅发布到Twitter

在我的iPhone应用程序中,我有两个按钮,标记为"Facebook"和"Twitter".我想使用Sharekit框架,这使我的共享非常简单.但是如ShareKit的示例代码所示,我只能显示许多共享服务,我不想包含这些服务.我希望我的"Facebook"按钮只显示Facebook共享服务,而Twitter也是如此.如何修改ShareKit才能像这样工作?

iphone twitter facebook sharekit

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

CUDA源文件获得.cu扩展名.头文件有什么作用?

标准惯例似乎是为CUDA源代码文件提供.cu扩展,以区别于具有.c扩展名的C文件.CUDA特定头文件的相应约定是什么?有吗?

file-extension cuda header-files

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

创建最小完整bug示例的好新手说明?

因此,我们这些一直在回答问题和处理错误报告一段时间的人都非常熟悉"完整,最小的例子"的概念.你从一堆巨大的代码开始,这是一个奇怪的错误,你想问别人.但是你不想把整个混乱发送给他们,所以你开始将一堆代码切成小块,直到你得到这个小的结晶20行宝石仍然有你开始时的同样的错误.

(然后,至少有一半的时间,你会意识到虫子是什么,因为它像蜥蜴蛾一样盯着你的脸,你根本不需要问.但那是副作用.)

做这种代码减少并不是每个人都有的技能 - 它需要一些练习,除了许多新手还没有学到他们应该首先做的事实.关于如何提出好问题的新手有几套优秀的说明(例如,ESR的经典"如何提出问题的智能方式").是否有良好的指示可以解释究竟什么是最小的完整示例,以及创建它们的方式和原因?

debugging

9
推荐指数
1
解决办法
648
查看次数

以溢出安全的方式计算整数绝对差异?

我想计算两个整数的绝对差值.天真,这只是abs(a - b).但是,这有两个问题,具体取决于整数是有符号还是无符号:

  • 对于无符号整数,a - b如果b大于,则将是一个大的正数a,并且绝对值操作将无法解决该问题.

  • 对于有符号整数,a - b可能超出可以表示为有符号整数的值范围,从而导致未定义的行为.(显然,这意味着结果需要是无符号整数.)

如何以有效的方式解决这些问题?

我想要一个适用于有符号和无符号整数的算法(或算法对),并且不依赖于将值转换为更大的整数.

(另外,澄清一下:我的问题不是如何在代码中编写这个,但我应该写什么才能保证溢出安全.计算abs(a - b)为有符号值然后转换为无符号值不起作用,因为有符号整数溢出通常是未定义的操作,至少在C中.)

algorithm integer overflow

7
推荐指数
1
解决办法
3901
查看次数

使用来自多个进程的fseek/fwrite写入文件的不同区域?

我最近遇到了一些未经良好测试的遗留代码,用于将分布在多个进程(这些是基于MPI的并行计算的一部分)的数据写入同一文件.这确实有效吗?

它是这样的:

  • 所有进程都打开相同的文件进行写入.

  • 每个进程调用fseek以寻找文件中的不同位置.此位置可能超过文件末尾.

  • 然后,每个进程将一个数据块写入文件中fwrite.搜索位置和块大小使得这些写入完全平铺文件的一部分 - 没有间隙,没有重叠.

这有保证可行,还是有时会失败?没有锁定来序列化写入,实际上它们可能是从同步点开始的.另一方面,我们可以保证他们写入不同的文件位置,不同于其他问题,这些问题试图从多个进程写入"文件末尾".

我发现这些进程可能位于通过NFS挂载文件的不同计算机上,我怀疑它可能会回答我的问题 - 但是,如果文件是本地的,它会起作用吗?

c file-io posix process mpi

7
推荐指数
1
解决办法
1761
查看次数

浮点计算根据编译器而变化

当我运行完全相同的代码执行在Windows和Solaris上编译的完全相同的浮点计算(使用双精度)时,我得到的结果略有不同.

我知道由于舍入错误导致结果不准确.但是我希望舍入错误与平台无关,从而在两个平台上给出相同(略微不正确)的结果,但事实并非如此.

这是正常的,还是我的代码中还有其他问题?

c c++ floating-point

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

将python模块导入dict(在execfile()中用作全局变量)?

我使用Python execfile()函数作为处理配置文件的一种简单但灵活的方式 - 基本上,这个想法是:

# Evaluate the 'filename' file into the dictionary 'foo'.
foo = {}
execfile(filename, foo)

# Process all 'Bar' items in the dictionary.
for item in foo:
  if isinstance(item, Bar):
    # process item
Run Code Online (Sandbox Code Playgroud)

这要求我的配置文件可以访问Bar类的定义.在这个简单的例子中,这是微不足道的; 我们可以定义foo = {'Bar' : Bar}而不是空字典.但是,在实际示例中,我有一个我想要加载的整个模块.一个明显的语法是:

foo = {}
eval('from BarModule import *', foo)
execfile(filename, foo)
Run Code Online (Sandbox Code Playgroud)

但是,我已经BarModule在我的顶级文件中导入了,所以看起来我应该能够直接定义foo为由一组定义的东西BarModule,而不必通过这个evalimport.

有一种简单的惯用方法吗?

python python-module

6
推荐指数
2
解决办法
5317
查看次数

加快Cygwin上的文件比较(使用`cmp`)?

我已经在Cygwin上写了一个bash脚本,这个脚本非常相似rsync,虽然不同,我相信我实际上并不能rsync用于我需要的东西.它迭代相应目录中的大约一千对文件,并与之进行比较cmp.

不幸的是,这似乎非常缓慢 - 大约十(编辑:实际上是25!)次,只要使用Python程序生成一组文件.

我是否正确地认为这是非常缓慢的?有没有简单的替代方案会更快?

(详细说明我的用例:我.c在一个临时目录中自动生成一堆文件,当我重新生成它们时,我只想将已经更改的文件复制到实际的源目录中,未更改的未更改(使用旧的创建时间)以便make知道它不需要重新编译它们..c但是,并非所有生成的文件都是文件,所以我需要进行二进制比较而不是文本比较.)

bash cygwin

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