考虑一种情况,你需要调用连续的例程,并在返回一个可以被评估为正值的值时停止(true,object,1,str(1)).
这样做非常诱人:
if (fruit = getOrange())
elseif (fruit = getApple())
elseif (fruit = getMango())
else fruit = new Banana();
return fruit;
Run Code Online (Sandbox Code Playgroud)
我喜欢它,但这不是一个非常经常的风格,可以被认为是专业的生产代码.人们可能更愿意看到更精细的代码,如:
fruit = getOrange();
if(!fruit){
fruit = getApple();
if(!fruit){
fruit = getMango();
if(!fruit){
fruit = new Banana();
}
}
}
return fruit;
Run Code Online (Sandbox Code Playgroud)
根据基本结构的教条,以前的形式是否可以接受?你会推荐吗?
编辑:
我向那些认为这些功能是工厂或建造者的人道歉.他们不是,他们只是占位符.问题更多的是语法而不是"工厂化".这些功能也可以是lambda.
几年前Dean Edwards将这个解决方法带给了document.onload问题.IE版本的解决方案涉及将此代码段附加到文档:
<script defer src=ie_onload.js><\/script>;
Run Code Online (Sandbox Code Playgroud)
Dean也非常坚定地认为,这是他能找到的最完美的解决方案,并且驳回了任何涉及onreadystatechange属性不可靠的解决方案(见评论).
对他的解决方案的后续改进仍然涉及一些版本的<script defer>,并且大多数JS框架实现了它,包括jQuery.
今天,我正在阅读JQuery 1.4.1的源码,我找不到它.
它落在哪一点,为什么?
我对像torrentz.com这样的搜索引擎背后的技术感到好奇.根据我的观察,它不会托管任何torrent文件,而是将您连接到其他服务器.
我特别感兴趣的是收集和索引所有内容背后的策略:
他们如何收集然后汇总数据?
它是一个提交基础服务,其中每个服务器都提交其内容以进行索引吗?
它是一种爬行算法吗?如果是这样,你怎么开始爬网像piratebay.org?
他们是否可以访问这些其他服务器的数据库?
我对bittorrent协议的了解和理解不是很精细,但我在网上找到的文档更多地指向了构建跟踪服务所涉及的过程,这不是我感兴趣的.任何见解和推荐的阅读材料表示赞赏.
我有一个多语言环境的网站.我需要在用户访问站点时将用户重定向到他们的语言环境而不使用url中的语言环境代码.
例如
http://www.mysite.com会 自动重定向到http://www.mysite.com/uk或http://www.mysite.com/us
我正在看rfc2616而且我在使用Code 300(多种选择)时犹豫不决:
所请求的资源对应于一组表示中的任何一个,每个表示具有其自己的特定位置,并且正在提供代理驱动的协商信息(部分12),以便用户(或用户代理)可以选择优选表示并重定向其请求到该位置.
除非是HEAD请求,否则响应应该包括一个实体,其中包含资源特征和位置列表,用户或用户代理可以从中选择最合适的资源特征和位置.实体格式由Content-Type头字段中给出的媒体类型指定.
根据用户代理的格式和功能,可以自动选择最合适的选择.但是,该规范没有为这种自动选择定义任何标准.
如果服务器具有首选的表示选择,则它应该在Location字段中包含该表示的特定URI;
我想我理解,但措辞仍然让我有点神秘.熟悉响应代码的人是否可以确认我是否在正确的轨道上并解释以下摘录?
我有一个看起来像这样的字符串:"XaXbXcX".我想要匹配任何一边用X包围的任何小写字母.我在Python中试过这个,但是我找不到我想要的东西:
import re
str = "XaXbXcX"
pattern = r'X([a-z])X'
matches = re.findall(pattern, str) # gives me ['a', 'c']. What about b?
Run Code Online (Sandbox Code Playgroud) 代码:
>>> class Negative:
... pass
>>> class Positive:
... @classmethod
... def __neg__(cls):
... return Negative
Run Code Online (Sandbox Code Playgroud)
所以我尝试
>>> -Positive is Negative
TypeError: bad operand type for unary -: 'type'
Run Code Online (Sandbox Code Playgroud)
这虽然有效
>>> -Positive() is Negative
True
Run Code Online (Sandbox Code Playgroud)
~其他一元运算符及其相关的“魔术”方法(例如and __invert__、+and__pos__等)也是如此。
为什么它适用于实例而不适用于类?我怎样才能让它发挥作用?
编辑:我已经按照建议修改了代码,以在元类中移动魔术方法。
class Negative: pass
class PositiveMeta(type):
def __neg__(cls):
return Negative
class Positive(metaclass=PositiveMeta): pass
Run Code Online (Sandbox Code Playgroud) 我正在浏览Zend_View源代码,我看到了这个:
include 'zend.view://' . func_get_arg(0);
Run Code Online (Sandbox Code Playgroud)
字符串" zend.view://"表示什么以及include语句如何在php中解析?
当我从.py文件中尝试此代码时,此代码有效,但在命令行解释器和空闲时失败.
>>> try:
... fsock = open("/bla")
... except IOError:
... print "Caught"
... print "continue"
File "<stdin>", line 5
print "continue"
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我正在使用python 2.6
这部分代码运行正常:
#include <stdio.h>
int main(){
//char somestring[3] = "abc";
int i, j;
int count = 5;
for((i=0) && (j=0); count > 0; i++ && j++){
printf("i = %d and j = %d\n", i, j);
count--;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出如预期:
i : 0 and j : 0
i : 1 and j : 1
i : 2 and j : 2
i : 3 and j : 3
i : 4 and j : 4
Run Code Online (Sandbox Code Playgroud)
当我在函数体的第一行取消注释char字符串声明时,事情变得奇怪了.
#include <stdio.h>
int main(){ …Run Code Online (Sandbox Code Playgroud) 在这里找到http://sla.ckers.org/forum/read.php?2,15812,page=2
如果您复制问题的标题并在浏览器中运行它,您应该看到它正在警告函数的字符串表示形式.
function alert() {
[native code]
}
Run Code Online (Sandbox Code Playgroud)
有人可以慢慢解释发生了什么吗?
python ×3
javascript ×2
bittorrent ×1
c ×1
if-statement ×1
include ×1
include-path ×1
jquery ×1
metaclass ×1
php ×1
regex ×1
rest ×1
stream ×1
syntax-error ×1