我是新手,monads让我完全糊涂了.给定一个文件名列表,我想知道是否所有文件都存在.
一般来说,我想做:
import System.Directory
allFilesPresent files = foldr (&&) True (map doesFileExist files)
Run Code Online (Sandbox Code Playgroud)
但是我不知道这样做的正确方法是什么,因为这里IO Bool没有Bool涉及到.
帮助和解释会非常好,谢谢!
假设我在C++中定义一个函数,如下所示:
void foo(int &x) const {
x = x+10;
}
Run Code Online (Sandbox Code Playgroud)
假设我将其称为如下:
int x = 5;
foo(x);
Run Code Online (Sandbox Code Playgroud)
现在通常(没有const关键字),这将成功地x从调用者的角度更改值,因为变量是通过引用传递的.是否const关键字改变呢?(即从调用者的角度来看,现在的价值是x15?)
我想我很困惑const关键字在附加到函数定义的末尾时的作用......任何帮助都表示赞赏.
我一直在阅读多线程和共享资源访问,其中一个(对我而言)新概念是互斥锁.我似乎无法找到的是发现"临界区"被锁定的线程实际发生的情况.它说在许多地方线程被"阻止",但这意味着什么?是否暂停,锁定解除后会恢复吗?或者它会在"运行循环"的下一次迭代中再次尝试?
我问的原因是因为我想要系统提供的事件(鼠标,键盘等),它们(显然)在主线程上传递,在我的辅助线程的运行循环中的一个非常特定的部分处理.因此无论发生什么事件,我都会在自己的数据结构中排队.显然,数据结构需要一个互斥锁,因为它被两个线程修改.缺少的难题是:当事件在主线程上的函数中传递时会发生什么,我想将其排队,但是队列被锁定了?主线程是否会被暂停,还是会跳过锁定的部分并超出范围(丢失事件)?
我无法理解定义指针变量.你能帮助我吗?
double(*)(double *) foo;
Run Code Online (Sandbox Code Playgroud)
注意:sory,我将变量func的名称编辑为foo.
搜索字符串中单词的最佳方法是什么
preg_match("/word/",$string)
stripos("word",$string)
Run Code Online (Sandbox Code Playgroud)
或者,还有更好的方法
我的教授今天根据Pygame中的面向对象编程给了我的课.基本上他已经说过我们要创建的游戏将没有主游戏循环.虽然我认为有可能这样做(并且这个问题已经表明它是可能的)我不相信这是遵守面向对象范式所必需的.
在教授给出的图中,他展示了游戏初始化,并且当对象被实例化时,程序的控制流将在对象之间分配.
基本上我认为以这种方式实现游戏是可能的,但它不是一种理想的方式,也不是面向对象的依从性所必需的.有什么想法吗?
编辑:我们正在创建一个小行星克隆,我认为这是因为它是一个实时动作游戏的事实进一步复杂化.
给出Java中的这段代码:
int i,j;
String[] names;
names[0] = new String("mary");
names[1] = "John";
i = names.length;
j = names[0].length();
Run Code Online (Sandbox Code Playgroud)
我需要找到错误.据我所知,第1,第2,第4和第5行是正确的,因为它们涉及简单的实例变量,向数组添加元素以及查找数组的长度.但是第3和第6行很奇怪.
你可以像第3行中的方式一样将字符串添加到数组中吗?如果数组中充满了字符串,你可以将其编入索引并对其使用length()方法吗?
如何使用Python将wav文件转码为ogg vorbis格式?
我可以使用PyMedia 1.3.7.3转换为mp3,但是当我将输出流类型设置为'ogg'时,我收到错误:oggvorbis_encode_init: init_encoder failed脚本死了.
我以为我会和F#相处得很好,因为我在Haskell很体面,但我觉得我被一些简单的问题所困扰.我有一些简单的JSON解析器的解析代码,如下所示:
let rec parseObject tokens = function
| '"' :: cs -> parseString tokens cs
| ':' :: cs -> parseValue tokens cs
| '}' :: cs -> tokens, cs
...
let rec parseValue tokens = function
| c :: cs when Char.IsWhiteSpace(c) -> parseValue tokens cs
| '{' :: cs -> parseObject tokens cs
...
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为parseObject不知道parseValue.不能扭转他们或我会遇到相反的问题.那我该怎么办呢?
我对Python比较陌生,想知道我是在重新发明轮子还是用非pythonic方式做事 - 读错了.
我正在重写一些最初用Lua编写的解析器.有一个函数接受来自导入表及其值的字段名称,对值执行一些操作并将其存储在适当的键名下的目标字典中.
在原始代码中,它通过类似开关的语句解决,匿名函数作为操作.Python代码如下所示:
class TransformTable:
target_dict = {}
...
def mapfield(self, fieldname, value):
try:
{
'productid': self.fn_prodid,
'name': self.fn_name,
'description': self.fn_desc,
...
}[fieldname](value)
except KeyError:
sys.stderr.write('Unknown key !\n')
def fn_name(val):
validity_check(val)
target_dict['Product'] = val.strip().capitalize()
...
Run Code Online (Sandbox Code Playgroud)
当然,每个"字段处理程序"函数都会执行不同的操作并存储在target_dict中的不同键中.因为Python不支持带语句的匿名函数(或者我错过了什么?)函数必须单独编写,这些函数的代码可读性较低且不必要地复杂.
任何提示如何以更优雅和更pythonic的方式执行此类任务是值得赞赏的.
谢谢
大卫