我对Haskell真的很陌生(实际上我从O'Reilly看到了"Real World Haskell",并且认为"嗯,我想我昨天将学习函数式编程")我想知道:我可以使用构造运算符来添加项目到列表的开头:
1 : [2,3]
[1,2,3]
Run Code Online (Sandbox Code Playgroud)
我尝试制作一本我在书中找到的示例数据类型然后玩它:
--in a file
data BillingInfo = CreditCard Int String String
| CashOnDelivery
| Invoice Int
deriving (Show)
--in ghci
$ let order_list = [Invoice 2345]
$ order_list
[Invoice 2345]
$ let order_list = CashOnDelivery : order_list
$ order_list
[CashOnDelivery, CashOnDelivery, CashOnDelivery, CashOnDelivery, CashOnDelivery, CashOnDelivery, CashOnDelivery, CashOnDelivery, CashOnDelivery, CashOnDelivery, CashOnDelivery, CashOnDelivery, CashOnDelivery, CashOnDelivery, ...-
Run Code Online (Sandbox Code Playgroud)
等......它只是永远重复,这是因为它使用了懒惰的评价?
- 编辑 -
好吧,所以我的头脑中有点让order_list = CashOnDelivery:order_list不会将CashOnDelivery添加到原始order_list然后将结果设置为order_list,而是递归并创建一个无限列表,永远将CashOnDelivery添加到开头本身.当然,现在我记得Haskell是一种函数式语言,我无法改变原始order_list的值,所以我应该怎么做才能简单地将这个列表添加到此列表的最后(或者开头,等等)?" 创建一个以列表和BillingInfo为参数的函数,然后返回一个列表?
- 编辑2 -
好吧,基于我得到的所有答案以及缺乏能够通过引用传递对象和变异变量(例如我习惯)...我认为我刚刚过早地问过这个问题而且在我真正理解我的问题的答案之前,我真的需要深入研究功能范例......我想我正在寻找的是如何编写函数或其他东西,获取列表和项目,以及返回同名的列表,因此可以多次调用该函数,而不是每次都更改名称(就好像它实际上是一个将实际订单添加到订单列表的程序,并且用户不必考虑每次列表的新名称,而是将项目附加到同一列表中).
目前我用PHP完成了所有基于Web的编程,每天我都越来越渴望尝试使用Python.
并不是说我没有在解释器中使用它,但我的意思是,用Python编写一个基于Web的项目,并且可能完全专注于Python.
但是,我知道Python并不是严格意义上的基于网络的编程语言(这很棒),这让我想知道是否有任何环节可以在网上使用它.
一个简单的例子就是,我确信$_POST默认情况下Python中没有类似的变量.这样的功能如何进入Python?
如何顺利地从PHP迁移到Python?我如何在网上使用Python?
我的意思是,除了浏览器之外,当然 - 我正在谈论用HTML和CSS构建本机应用程序 - 而不是Web应用程序,而是真正的本机GUI.
我想知道这样的事情是否存在?
你觉得这样的野兽怎么样?这种系统的优点/缺点是什么?
我搜索和搜索但似乎无法找到一种方法以任何合理的方式将文件上传到我的twisted.web应用程序.
目前,将文件上载发布到资源会产生一个request.args['file']变量,即填充了文件内容的列表.我找不到获取有关该文件的任何信息的方法:mime type,filename,filesize(除了只取字符串的长度args['file'][])等.
我已经读过twisted.web2在文件上传方面更好.但是我不知道它有多好,或者我如何使用twisted.web2来处理twisted.web应用程序中的文件上传.
有什么建议?这就像疯了一样困扰着我 - 哦,我查看了请求标题,并没有真正找到任何有意义的东西.如何使用Twisted获取有关文件上传的更多元信息?
我怎样才能从请求对象中获取裸HTTP请求?可能吗?
我使用Python 2.6.5构建我的应用程序,它随sqlite3 3.5.9一起提供.显然,正如我在另一个问题中发现的那样,在版本3.6.19之前,sqlite3中没有引入外键支持.但是,Python 2.7附带了sqlite3 3.6.21,所以这项工作 - 我决定在我的应用程序中使用外键,所以我尝试升级到python 2.7.
我正在使用扭曲,我不能为我的生活得到它建立.Twisted依赖于zope.interface而我找不到zope.interface for python 2.7 - 我认为它可能只是"工作",但我必须将所有文件复制到我自己身上,让自己一切正常工作,而不是仅仅使用自安装包.
所以我认为重新构建python 2.6并将其链接到新版本的sqlite3可能更明智.但我不知道 -
我该怎么做?
我安装了Visual Studio 2008作为编译器,我读到这是唯一真正支持Windows的,我运行的是64位操作系统
我经常想知道 - 为什么在清理HTML输入时使用白名单而不是黑名单?
有多少偷偷摸摸的HTML技巧可以打开XSS漏洞?显然不允许脚本标签和框架,并且HTML元素中的字段将使用白名单,但为什么不允许大部分内容?
我正在尝试@property在类中的dict上使用Python的装饰器.我的想法是,我希望在访问后清除某个值(称之为"消息").但我还想要另一个值(称之为'last_message')来包含最后设置的消息,并保留它直到另一个消息被设置.在我看来,这段代码可行:
>>> class A(object):
... def __init__(self):
... self._b = {"message": "",
... "last_message": ""}
... @property
... def b(self):
... b = self._b
... self._b["message"] = ""
... return b
... @b.setter
... def b(self, value):
... self._b = value
... self._b["last_message"] = value["message"]
...
>>>
Run Code Online (Sandbox Code Playgroud)
但是,它似乎不是:
>>> a = A()
>>> a.b["message"] = "hello"
>>> a.b["message"]
''
>>> a.b["last_message"]
''
>>>
Run Code Online (Sandbox Code Playgroud)
我不确定我做错了什么?在我看来似乎@property不像我期望的那样工作,但也许我在做其他根本错误的事情?
另外,我知道我可以在课堂上使用个别值.但这是作为Web应用程序中的会话实现的,我需要它作为一个词典.我可以使这个工作,或使整个会话对象假装它是一个字典,或使用单个变量,并在其余的代码库中将其破解为工作性.我宁愿让这个工作.
我在WPF应用程序中绘制图形,但使用drawingContext.DrawLine(...)绘制的线条绘制到子像素边界.
我可以通过创建Line对象让它们看起来很漂亮,但是每次视觉无效时我都不想创建成千上万的对象.
如何强制它们适合像素?
我正在阅读Llama(Learning Perl)一书,并正在进行练习.对于这个练习:
编写一个程序,在单独的行上读取字符串列表,直到输入结束,并以相反的顺序打印出列表.[ .]
好吧,我已经想出了一个更简单的方法(我记得你可以reverse在数组上使用......到目前为止,Perl是如此......真棒),但我想知道为什么这个没有用.
#!/usr/bin/perl
use 5.010;
chomp(@strings = <STDIN>);
foreach (@strings){
push @revstrings, $_;
}
while($i++ <= scalar @revstrings){
say pop @revstrings;
}
Run Code Online (Sandbox Code Playgroud)
它是这样的:
$ ./first
one
two
three
[^ D]
三个
两个
$
如果我<=将while循环更改为just,则输出相同<.
我正在开始我的第一个C#项目,我想创建一个"表单设计器"(就像VS中的那个).
我们的想法是,将有一个带有限工具箱的可视化表单设计器,它将生成Python代码(后来更多)以创建相同的表单.
问题是,我不知道如何开始.首先,我在VS中拥有表单设计器:如何制作"表单内的表单"?
接下来......我不知道这会有多复杂.我想我可以在单击表单时在表单上创建的每个控件旁边显示小框,用于调整大小,并在双击或其他内容时使文本框显示在其上,以更改其中的文本......这样的事情.
所以我想知道的另一件事是:
我确实有C和C++的编程经验,我已经做了很多年的PHP并且最近开始使用Python.我在VB6中动态生成了表单.鉴于这种经历,我对这个项目的态度是什么?