我已经看过很多了:$fp = fopen($filepath, "w") or die();
但我似乎无法找到关于这种"或"语法的任何真实文档.它的功能显而易见,但我可以在任何地方使用它吗?它一定要跟着die()吗?or当你可以使用类似的东西时,是否有任何需要注意的事项
if (file_exists($filepath))
$fp = fopen($filepath,"r");
else
myErrMessage();
Run Code Online (Sandbox Code Playgroud)
我知道这似乎是一个愚蠢的问题,但我找不到任何严格的规则.谢谢.
我有时想知道的一件事是下面显示的两个中哪个更好(如果有的话)?它是更好立即返回,如果监护条件尚未满足,或者如果保护条件,你应该只能做其他的东西是满意吗?
为了参数,请假设保护条件是一个返回布尔值的简单测试,例如检查元素是否在集合中,而不是通过抛出异常可能影响控制流的东西.还假设方法/函数足够短,不需要编辑器滚动.
// Style 1
public SomeType aMethod() {
SomeType result = null;
if (!guardCondition()) {
return result;
}
doStuffToResult(result);
doMoreStuffToResult(result);
return result;
}
// Style 2
public SomeType aMethod() {
SomeType result = null;
if (guardCondition()) {
doStuffToResult(result);
doMoreStuffToResult(result);
}
return result;
}
Run Code Online (Sandbox Code Playgroud) 这就是我现在正在做的事情.有没有更好的方式来访问超类?
public class SearchWidget {
private void addWishlistButton() {
final SearchWidget thisWidget = this;
button.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
// A better way to access the super class?
// something like "this.super" ...?
workWithWidget(thisWidget);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Google Web Toolkit进行编程,但我认为这确实是一个通用的Java问题.
这个问题与Javascript事件处理和流量控制有关,但它只是一步之遥.仍然没有答案的问题是:当一个事件被触发并且控制权返回给浏览器时,浏览器是否可以决定首先处理其他事件(由其他脚本或用户操作触发)(A),或者它总是直接处理我的事件(B)?
这个问题很重要,因为在情况(B)中你可以依赖于在触发事件和事件处理程序之间没有任何改变的事实,而(A)不给出任何保证.
我的第一个猜测是(B),还有什么可以stopPropagation()和preventDefault()工作?但是给它第二个想法,这并不是确凿的证据.
这个问题的现实例子.我正在修改一个富文本编辑器(hallo),我希望它有这些规范:
现在,在大多数情况下,当您关闭对话框时,您希望焦点返回到#txt.但是如果打开对话框并单击页面上的其他位置,编辑器将关闭并调用工具栏,包括要关闭的对话框.如果在这种情况下对话框将焦点返回到编辑器,它将再次激活编辑器.
据我所知,事件处理顺序至少是确定性的.某些事件可能会延迟,而其他事件则会提前处理.这就是'同步'的含义.例外情况当然是加载文件等事件.
从程序组件的角度来看,比如对话框,情况可能非常难以预测.它可以将处理程序绑定到open事件,然后调用dialog("open"),但是在调用和处理程序之间可能发生任何事情,只是因为编辑器在同一事件上有一个事件处理程序.
所以我的结论是1)是的,它是可预测的,但2)它需要一个复杂的架构来实现这一点.
我已经开发了一段时间的Web应用程序,并且已经完成了GUI和游戏应用程序开发.
在Web应用程序(php for me)中,对文件发出请求,该文件包含将信息处理到内存中的所有必要文件,然后每个请求的流程从上到下.(主要是)
我知道对于游戏来说,动作是在游戏循环中发生的,但是游戏的所有不同元素如何分成单个循环(菜单系统,gui,加载资源和3d世界)以及某些常量的加载和卸载的东西.
对于GUI程序来说,我相信有一些"应用程序循环".
大多数项目被调用到内存中然后被访问,是否需要时链接并加载到内存中的项目?
帮助我更快地开发Web应用程序的是当我理解程序的流程时,它不必详细,只需要一般的想法或伪代码.
我从SO复制一段代码作为例子.子例程包含错误处理程序.是否应该为所有Subs制作错误处理程序?
Public Sub SubA()
On Error Goto ProcError
Connection.Open
Open File for Writing
SomePreciousResource.GrabIt
ProcExit:
Connection.Close
Connection = Nothing
Close File
SomePreciousResource.Release
Exit Sub
ProcError:
MsgBox Err.Description
Resume ProcExit
End Sub
Run Code Online (Sandbox Code Playgroud)
顺便说一下,如何做一个子程序内部的控制流时,代码执行遇到Exit Sub,End Sub和Resume?当它遇到诸如ProcError:执行期间的标签时,它是执行它还是跳过它?
这也许是一个痛苦的基本回答的问题,但我想了解一下使用PHP的关于性能问题如果相同的 !==对比,如果等于 !=控制流.
考虑以下简单的PHP函数:
<?php
function test_json($json = NULL) {
if ($json != NULL) {
echo 'You passed some JSON.';
} else {
echo 'You failed to pass any JSON.';
}
}
?>
Run Code Online (Sandbox Code Playgroud)
从性能的角度来看,最好是使用if(!==)来阻止PHP迭代变量类型,试图找到有效的比较吗?
我认为是!== 第一个对变量的类型,如果失败,它会立即返回FALSE?我!=从PHP3开始几乎用作反射.既然我正在开展一些计算密集型项目,那么微小的性能考虑将成为一个问题.
当然,欢迎对流量控制优化提出其他意见!
php performance if-statement program-flow micro-optimization
嗨,我正在查看一些旧的c#代码并注意到很多这样的代码:
void SomeFunction()
{
if (key.Length != Dimensions)
{
throw new KeySizeException();
}
else
{
SomeOtherFunction();
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一个甚至需要else块的情况?我可以安全地将代码缩短到此而没有任何影响吗?
void SomeFunction()
{
if (key.Length != Dimensions)
{
throw new KeySizeException();
}
SomeOtherFunction();
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,异常应该抛出这个方法的程序流吗?但我只是想知道在DotNet中是否有办法调整未处理的异常是如何处理的,这会导致第二个实现与第一个实现不同?
如何突破开始区块并跳转到救援区?
def function
begin
@document = Document.find_by(:token => params[:id])
next if @document.sent_at < 3.days.ago # how can I skip to the rescue block here?
@document.mark_as_viewed
rescue
flash[:error] = "Document has expired."
redirect_to root_path
end
end
Run Code Online (Sandbox Code Playgroud)
我尝试使用next不起作用.
根据我的理解,我希望遵循最终释放资源的最佳实践,以防止任何连接泄漏.这是我在HelperClass中的代码.
public static DynamoDB getDynamoDBConnection()
{
try
{
dynamoDB = new DynamoDB(new AmazonDynamoDBClient(new ProfileCredentialsProvider()));
}
catch(AmazonServiceException ase)
{
//ase.printStackTrace();
slf4jLogger.error(ase.getMessage());
slf4jLogger.error(ase.getStackTrace());
slf4jLogger.error(ase);
}
catch (Exception e)
{
slf4jLogger.error(e);
slf4jLogger.error(e.getStackTrace());
slf4jLogger.error(e.getMessage());
}
finally
{
dynamoDB.shutdown();
}
return dynamoDB;
}
Run Code Online (Sandbox Code Playgroud)
我的疑问是,既然finally块将被执行,无论如何,dynamoDB将返回空连接,因为它将在finally块中关闭然后执行return语句?TIA.
program-flow ×10
java ×2
php ×2
c# ×1
control-flow ×1
if-statement ×1
javascript ×1
or-operator ×1
performance ×1
ruby ×1
syntax ×1
this ×1
vba ×1