(即使这个标题会导致火焰,我意识到)
Python做出了深思熟虑的设计选择,让for循环使用显式迭代,在大多数情况下,代码大大简化了.
但是,如果你的测试用例和更新函数很复杂,有时构造一个iterable会非常麻烦,所以我发现自己编写了以下while循环:
val = START_VAL
while <awkward/complicated test case>:
# do stuff
...
val = <awkward/complicated update>
Run Code Online (Sandbox Code Playgroud)
这个问题是更新位于while块的底部,这意味着如果我想在其中continue嵌入某个地方,我必须:
使用重复代码进行复杂/ awkard更新,AND
冒着忘记它并让我的代码无限循环的风险
我可以去手动滚动一个复杂的迭代器:
def complicated_iterator(val):
while <awkward/complicated test case>:
yeild val
val = <awkward/complicated update>
for val in complicated_iterator(start_val):
if <random check>:
continue # no issues here
# do stuff
Run Code Online (Sandbox Code Playgroud)
这让我感到震惊,因为waaaaay太冗长和复杂.堆栈溢出中的人有一个更简单的建议吗?
回复评论:
@Glenn Maynard:是的,我驳回了答案.如果有一种方法可以在一个方法中编写五行,那就太糟糕了......特别是在一直出现的情况下(循环是图灵完成程序的一个共同特征).
对于寻找具体示例的人:假设我正在使用自定义日期库.那么我的问题是,你将如何在python中表达这一点:
for (date = start; date < end; date = calendar.next_quarter_end(date)):
if another_calendar.is_holiday(date):
continue
# ... do stuff...
Run Code Online (Sandbox Code Playgroud) 我有一个junit测试方法,它将CommonsMultipartFile对象作为参数.
我正在尝试创建一个FileItem对象,以便将其传递给构造函数,
CommonsMultipartFile(org.apache.commons.fileupload.FileItem fileItem)
Run Code Online (Sandbox Code Playgroud)
为此,我尝试使用DiskFileItem构造函数创建FileItem对象,
DiskFileItem(java.lang.String fieldName, java.lang.String contentType, boolean isFormField, java.lang.String fileName, int sizeThreshold, java.io.File repository)
Run Code Online (Sandbox Code Playgroud)
但我不知道如何传递任何这些参数.
我所有这些都在Spring 3 MVC控制器中工作,但是为了进行junit测试,我需要传递一个方法两个对象.一个是UploadItem对象,如下所示,
import org.springframework.web.multipart.commons.CommonsMultipartFile;
public class UploadItem {
private String fileName;
private String filePath;
private CommonsMultipartFile fileData;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public CommonsMultipartFile getFileData() {
return fileData;
}
public void setFileData(CommonsMultipartFile fileData) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试在bash中编写一个函数来访问脚本命令行参数,但是它们被替换为函数的位置参数.如果函数没有显式传递,是否有任何方法可以访问命令行参数?
# Demo function
function stuff {
echo $0 $*
}
# Echo's the name of the script, but no command line arguments
stuff
# Echo's everything I want, but trying to avoid
stuff $*
Run Code Online (Sandbox Code Playgroud) 我已经开始学习游戏物理,我正试图以一个角度移动一个球.但它并没有改变它的角度.Java坐标系有点不同,我认为我的问题就在那里.这是我的代码.
这是用于计算x和y速度:
scale_X= Math.sin(angle);
scale_Y=Math.cos(angle);
velosity_X=(speed*scale_X);
velosity_Y=(speed*scale_Y);
Run Code Online (Sandbox Code Playgroud)
这是用于在run()函数中移动球:
ball.posX =ball.posX+(int)velosity_X;
ball.posY=ball.posY+(int)velosity_Y;
Run Code Online (Sandbox Code Playgroud)
我用过(int)velosity_X,(int)velosity_Y因为在ball课堂上画画对象
g.drawOval(posX, posX, width, height);
Run Code Online (Sandbox Code Playgroud)
这里g.drawOval要求int.我不知道这是不是一个问题.此外,如果我使用角度30它会变为+ X和+ Y但是如果我使用角度35它会变为-X和-Y.我没弄清楚如何在Java中使用坐标系.
在MVC Web开发框架(如Ruby on Rails,Django和CakePHP)中,HTTP请求被路由到控制器,控制器获取通常持久存储到后端数据库存储的对象.这些对象代表用户,博客帖子等内容,并且通常在其方法中包含用于权限,获取和/或变异其他对象,验证等的逻辑.
这些框架都非常面向对象.我最近一直在阅读关于函数式编程的内容,它似乎带来了诸如可测试性,简洁性,模块性等巨大的好处.然而,我见过的函数式编程的大多数例子都实现了诸如quicksort或fibonnacci序列之类的琐碎功能,而不是复杂的webapps.我看了几个"功能"的Web框架,他们似乎都很好地实现了视图和控制器,但很大程度上跳过了整个"模型"和"持久性"部分.(我正在谈论更多像Compojure这样的框架,这些框架应该是纯粹的功能,而不是一些方便的似乎使用Scala的OO部分的模型 - 但如果我在这里错了,请纠正我.)
我还没有看到如何使用函数式编程来提供OO编程提供的隐喻,即表映射到对象,以及对象可以提供强大的封装逻辑(如权限和验证)的方法.此外,使用SQL查询来保存数据的整个概念似乎违反了整个"副作用"概念.有人可以解释如何在功能编程的Web框架中实现"模型"层吗?
model-view-controller functional-programming model ruby-on-rails clojure
我正在寻找一种方法NSPredicate来设置LIKE条件来获取对象.除此之外,一个OR也是有用的.我正在尝试做一些事情,如果用户搜索"詹姆斯"我可以写一个NSPredicate将做相当于:
select * from users where firstname LIKE '%James%' OR lastname LIKE '%James%';
Run Code Online (Sandbox Code Playgroud) 我正在从C转换到C++.在C++中,malloc函数有用吗?或者我可以使用"new"关键字声明它.例如:
class Node
{
...
}
...
Node *node1 = malloc(sizeof(Node)); //malloc
Node *node2 = new Node; //new
Run Code Online (Sandbox Code Playgroud)
我应该使用哪一个?
我目前有一个hashsets的问题.我有不可变的类,只包含一个项目,当我将两个不同的类添加到相同的数据到一个哈希集时,我在集合中得到它们.这很奇怪,因为我在基类和超类上都重载了Equals和GetHashCode.
public abstract class Contact :IEquatable<Contact>
{
public readonly BigInteger Id;
public Contact(BigInteger id) { this.Id = id; }
public abstract bool Equals(Contact other);
public abstract int GetHashCode();
public abstract bool Equals(object obj);
}
Run Code Online (Sandbox Code Playgroud)
而继承类:
public class KeyOnlyContact :Contact, IEquatable<KeyOnlyContact>
{
public KeyOnlyContact(BigInteger id) :base(id) { }
public override bool Equals(object obj)
{
if (obj is KeyOnlyContact)
return Equals(obj as KeyOnlyContact);
else if (obj is Contact)
return Equals(obj as Contact);
else
return (this as object).Equals(obj);
}
public override bool Equals(Contact …Run Code Online (Sandbox Code Playgroud) 我需要做的就是从具有自签名SSL证书的Web服务器下载一些基于文本的基本文件和图像文件.
我一直试图弄清楚如何使用HttpClient来做到这一点,但让SSL工作是一场噩梦,这对于这么简单的任务来说似乎太麻烦了.
有没有更好的方法来执行这些文件下载?也许通过WebView或浏览器功能?重新制作一个简单的HTTPS GET请求是一个很大的痛苦,并且显着地阻碍了我的开发计划.
我在VPS上的Ubuntu上有一个运行在Tomcat上的小型grails应用程序.我使用MySql作为我的数据存储区,一切正常,除非我离开应用程序超过半天(8小时?).我做了一些搜索,显然这是wait_timeoutmysql.cnf中的默认值,所以8小时后连接会死,但Tomcat不会知道,当下一个用户试图查看该站点时,他们会看到连接失败错误.刷新页面将解决此问题,但我想完全摆脱错误.对于我的MySql版本(5.0.75),我只有my.cnf而且它不包含这样的参数.在任何情况下,更改此参数都无法解决问题.
这篇Blog Post似乎报告了一个类似的错误,但我仍然不完全理解我需要配置什么来解决这个问题,而且我希望有一个比另一个第三方库更简单的解决方案.我正在运行的机器有256MB内存,我正在努力使程序/服务的运行数量降到最低.
我可以在Grails/Tomcat/MySql中配置什么来让它消失吗?
提前致谢,
GAV
从我的Catalina.out;
2010-04-29 21:26:25,946 [http-8080-2] ERROR util.JDBCExceptionReporter - The last packet successfully received from the server was 102,906,722 milliseconds$
2010-04-29 21:26:25,994 [http-8080-2] ERROR errors.GrailsExceptionResolver - Broken pipe
java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
...
2010-04-29 21:26:26,016 [http-8080-2] ERROR util.JDBCExceptionReporter - Already closed.
2010-04-29 21:26:26,016 [http-8080-2] ERROR util.JDBCExceptionReporter - Already closed.
2010-04-29 21:26:26,017 [http-8080-2] ERROR servlet.GrailsDispatcherServlet - HandlerInterceptor.afterCompletion threw exception
org.hibernate.exception.GenericJDBCException: Cannot release connection
at java.lang.Thread.run(Thread.java:619)
Caused by: java.sql.SQLException: Already closed.
at …Run Code Online (Sandbox Code Playgroud) .net ×1
android ×1
argv ×1
bash ×1
c# ×1
c++ ×1
clojure ×1
cocoa ×1
cocoa-touch ×1
core-data ×1
debugging ×1
download ×1
file-upload ×1
grails ×1
hashset ×1
https ×1
iphone ×1
java ×1
malloc ×1
model ×1
mysql ×1
new-operator ×1
nspredicate ×1
python ×1
self-signed ×1
spring ×1
spring-mvc ×1
timeout ×1
tomcat ×1