我最近一直在思考如何在C(而不是 C++)中进行函数式编程.显然,C是一种过程语言,本身并不真正支持函数式编程.
是否有任何编译器/语言扩展可以为语言添加一些函数式编程结构?GCC提供嵌套函数作为语言扩展; 嵌套函数可以从父堆栈框架访问变量,但距离成熟的闭包还有很长的路要走.
例如,我认为在C中真正有用的一件事是,在任何需要函数指针的地方,你都可以传递一个lambda表达式,创建一个衰变为函数指针的闭包.C++ 0x将包含lambda表达式(我觉得很棒); 但是,我正在寻找适用于直C的工具.
[编辑]为了澄清,我不是试图解决C中更适合函数式编程的特定问题; 如果我想这样做,我只是想知道那里有什么工具.
有时您正在开发并且您决定提交,忘记您在项目中创建了一些文件.然后几天后你的伙伴从Subversion获取你的构建并抱怨一些文件似乎丢失了.你意识到,啊垃圾,我忘了添加那些文件!
如何从Subversion获取不受版本控制的文件列表,所以我确定我已将所有内容添加到存储库中?
我还没有找到这个特定问题的答案; 也许没有一个.但我一直想知道它.
当您在文本编辑器中查看二进制文件时,究竟是什么导致二进制文件显示为"乱码"?加密文件也是如此.尝试将文件的二进制值转换为ASCII吗?是否可以转换视图以显示原始二进制值,即显示组成文件的1和0?
最后,有没有办法确定哪个程序将正确打开数据文件?很多时候,特别是对于Windows,文件是孤立的,或者与特定程序无关.在文本编辑器中打开它有时会告诉你它属于哪里,但由于胡言乱语,大部分时间都没有.如果扩展程序未提供任何信息,您如何确定它所属的程序?
我正在解析输入文本文件.如果我使用getline()一次获取一行输入,有没有办法可以搜索字符串来获取整数?我在思考类似于Java中的getNextInt().
我知道输入线上必须有2个数字; 但是,这些值将由一个或多个空格字符分隔,因此我不能只是去一个特定的位置.
我正在尝试创建一个POST请求,遗憾的是POST的主体似乎永远不会被发送.
下面是我正在使用的代码.当用户单击链接而不是表单"提交"按钮时,将调用代码.它运行时没有错误,调用正在调用的servlet但是,如前所述,POST的主体似乎永远不会被发送.
我可以验证请求体是否永远不会被发送,因为我可以访问被调用的servlet.
我尝试用"参数"代替"requestBody".我也尝试过使用参数字符串(x = a?y = b).我还验证了"ckULK"确实包含有效值.
有任何想法吗?
new Ajax.Request(sURL,
{
method: 'POST'
, contentType: "text/x-json"
, requestBody: {ulk:ckULK}
, onFailure:
function(transport)
{
vJSONResp = transport.responseText;
var JSON = eval( "(" + vJSONResp + ")" );
updateStatus(JSON.code + ": " + JSON.message);
} // End onFailure
, onSuccess:
function(transport)
{
if (200 == transport.status)
{
vJSONResp = transport.responseText;
}
else
{
log.value += "\n" + transport.status;
}
} // End onSuccess
}); // End Ajax.request
Run Code Online (Sandbox Code Playgroud) 是否可以使用CGAffineTransformMakeScale将UIView缩小为0(宽度和高度为0)?
view.transform = CGAffineTransformMakeScale(0.0f,0.0f);
为什么会抛出" <Error>: CGAffineTransformInvert: singular matrix.
" 的错误?
更新:还有另一种将UIView缩小到0的方法
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
view.frame = CGRectMake(view.center.x, view.center.y, 0, 0);
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud) 我正在使用PyGTK中的桌面应用程序,似乎遇到了我的文件组织的一些限制.到目前为止,我以这种方式构建了我的项目:
到目前为止,这已经相当不错了,但是此时application.py开始变得相当长.我查看了许多其他PyGTK应用程序,它们似乎有类似的结构问题.在某一点上,主模块开始变得非常长并且没有明显的方法将代码分解成更窄的模块而不牺牲清晰度和面向对象.
我已经考虑过将GUI作为主要模块,并为工具栏例程,菜单例程等提供单独的模块,但在那时我相信我将失去OOP的大部分好处并最终得到一切 - 引用 - 所有方案.
我应该只处理一个非常长的中央模块,还是有更好的方法来构建项目,这样我就不必那么依赖类浏览器了?
编辑我
好的,关于所有MVC的东西都是如此.我的代码中确实有一个粗略的MVC近似值,但不可否认,我可能通过进一步隔离模型和控制器来获得一些里程.但是,我正在阅读python-gtkmvc的文档(顺便说一句,这是一个很棒的发现,谢谢你引用它),我的印象是它不会解决我的问题,只需将其正式化即可.我的应用程序是单个glade文件,通常是单个窗口.因此无论我如何紧密地定义模块的MVC角色,我仍然会有一个控制器模块执行大部分操作,这正是我现在所拥有的.不可否认,我在适当的MVC实施上有点模糊,我将继续研究,但它没有
我应该考虑单独的控制器/视图对用于窗口的单独部分(工具栏,菜单等)吗?也许这就是我在这里所缺少的.似乎这就是S. Lott在他的第二个要点中提到的.
感谢到目前为止的回复.
我试图了解SPL迭代器,我想出了两种方法来处理它.我看到第一个版本不那么复杂,但第二个版本有它的构图感觉(我认为).
我没看到的是哪一个优于另一个?或者我只是让这复杂化?
这是我的想法:
该对象实现了一个迭代器:
class BoxOfChocolates implements Iterator {
private $id
private $name; // e.g. Valentine's Heart Box
private $maker; // e.g. Hersheys
private $items; // array
public function getChocolates() {
$query = ...
foreach($rows as $row) {
$this->_items[] = new Chocolate() ...
}
}
// ... necessary iterator implementation stuff
}
Run Code Online (Sandbox Code Playgroud)
该对象包含一个可迭代的对象:
class BoxOfChocolates {
private $id;
private $name;
private $maker;
private $items; // chocolates object
public function getChocolates() {
$this->items = new Chocolates();
$this->items->getChocolates();
}
}
class Chocolates …
Run Code Online (Sandbox Code Playgroud) 我收到这条消息:
使用以下搜索条件找不到X.509证书:StoreName'My',StoreLocation'LocalMachine',FindType'FindBySubjectDistinguishedName',FindValue'CN = HighBall'.
我的web.config设置看起来像这样;
身份验证设置如...
<authentication mode="Windows" />
Run Code Online (Sandbox Code Playgroud)
为wsHttpBinging设置绑定
我的服务行为设置如此......
<behavior name="HighBall.Services.ServiceVerificationBehavior">
<serviceAuthorization principalPermissionMode="UseAspNetRoles"
roleProviderName="HighBallRoleProvider" />
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<serviceCertificate findValue="CN=HighBall" />
<userNameAuthentication userNamePasswordValidationMode="MembershipProvider"
membershipProviderName="HighBallMembershipProvider" />
</serviceCredentials>
</behavior>
Run Code Online (Sandbox Code Playgroud)
我试图找出一种方法来验证证书存储的内容,方式和位置,但我不知道如何做到这一点.如果有人对此错误消息有任何想法,我将非常感谢您的帮助.
binaryfiles ×1
c ×1
c# ×1
c++ ×1
certificate ×1
cocoa-touch ×1
gtk ×1
iphone ×1
iterator ×1
javascript ×1
memory ×1
module ×1
objective-c ×1
organization ×1
parsing ×1
php ×1
post ×1
prototypejs ×1
pygtk ×1
python ×1
string ×1
svn ×1
wcf ×1
x509 ×1