我是编程新手,我想知道是否有正确的方法来订购控制结构逻辑.
首先检查最可能的情况似乎更自然,但我觉得有些控制结构不起作用,除非他们检查所有错误的东西以得到真实的东西(逻辑演绎?)
很难适应这种"负面"观点,我更喜欢更积极的前景,假设一切都是真的:)
有时,我有一个控制结构(if,for,...),并且根据条件我要么使用控制结构,要么只执行主体.作为一个简单的例子,我可以在C中执行以下操作,但它非常难看:
#ifdef APPLY_FILTER
if (filter()) {
#endif
// do something
#ifdef APPLY_FILTER
}
#endif
Run Code Online (Sandbox Code Playgroud)
如果我在运行时只知道apply_filter,它也不起作用.当然,在这种情况下,我只需将代码更改为:
if (apply_filter && filter())
Run Code Online (Sandbox Code Playgroud)
但这在任意控制结构的一般情况下不起作用.(我手边没有一个很好的例子,但最近我有一些代码可以从这样的功能中获益很多.)
是否有任何语言我可以应用条件来控制结构,即具有更高阶的条件?在伪代码中,上面的例子是:
<if apply_filter>
if (filter()) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
或者更复杂的例子,如果一个varable在函数中设置了包装代码并将其作为一个线程启动:
<if (run_on_thread)>
void thread() {
<endif>
for (int i = 0; i < 10; i++) {
printf("%d\n", i);
sleep(1);
}
<if (run_on_thread)>
}
start_thread(&thread);
<endif>
Run Code Online (Sandbox Code Playgroud)
(实际上,在这个例子中,我可以想象为meta条件赋一个名称甚至是有用的,以确保顶部和底部s同步.)
我可以想象这样的东西是LISP中的一个功能,对吧?
我正在尝试编写一个程序,它在命令行中使用两个整数并对它们执行一些有趣的操作.我想尽可能容易和必要地编写整数的读/解,因为它应该是相对简单的代码.
我面临的问题是,在Haskell中处理错误并不是那么简单.似乎在Haskell中经常使用模式匹配.这似乎使得代码比命令式版本更难以遵循.
该程序将像这样运行(在这个例子中,它只是将两个数字加在一起):
$ ./my_prog
ERROR: Must run like `./my_prog NUM_A NUM_B`.
$ ./my_prog cat 1
ERROR: Could not parse NUM_A "cat" as integer
$ ./my_prog 10 dog
ERROR: Could not parse NUM_B "dog" as integer
$ ./my_prog 10 1
11
Run Code Online (Sandbox Code Playgroud)
这是我想要在命令式伪Python中做的事情:
function die (errorMessage):
print("ERROR: %s" % errorMessage)
sys.exit(1)
function main ():
if len(sys.argv) != 2:
die("Must run program like `%s NUM_A NUM_B`" % sys.progname)
num_a = 0
num_b = 0
try:
num_a = int(sys.argv[0])
except:
die("Could not parse …Run Code Online (Sandbox Code Playgroud) python haskell coding-style control-structure pattern-matching
我的直觉告诉我,对于以下代码,有一个更好的,也许是单行重构:
if (isset($x))
{
if (isset($y))
{
$z = array_merge($x,$y);
}
else
{
$z = $x;
}
}
else
{
$z = $y;
}
Run Code Online (Sandbox Code Playgroud)
如果我不担心警告错误,一个简单的array_merge($x,$y)工作,但我想知道一个更好的方法来做到这一点.思考?
在使用C预处理器玩了一下后,我想到了一种类似于具有控制结构的Python的方法,定义如下:
#define with(var) for(int i##__LINE__=0;i##__LINE__<1;)for(var;i##__LINE__<1;++i##__LINE__)
Run Code Online (Sandbox Code Playgroud)
样品用法:
#include <cstdio>
#include "FileClass.hpp"
#include "with.hpp"
int main(){
with(FileClass file("test.txt")){
printf("%s\n",file.readlines().c_str());}
return 0;}
Run Code Online (Sandbox Code Playgroud)
这个想法是一个双嵌套的for循环有一个外部混淆的迭代变量,它在内部循环中递增一次以打破它.这会导致以下代码在其范围内使用var执行一次.
这有什么缺点吗?如果我足够混淆迭代变量,几乎没有机会发生名称冲突,它只使用标准的预处理器功能,似乎没有任何反击的可能性,而且很容易理解.
几乎看起来好得令人难以置信 - 有什么理由不在任何地方使用它吗?
我试图发布无限数量的喜欢,但根据数组中存储的cookie数量来循环cookie和代理.显然,i ++是无法访问的代码.这是什么原因?
public void PostLikes()
{
PostLike postLike = new PostLike();
for (int i =0;i<this.cookies.ToArray().Length;i++)
{
for (int j = 0; ; j++)
{
postLike.PostLike(this.cookies[i], this.importedProxies[i], this.proxyUsernameTextbox, this.proxyPasswordTextbox, this.postsIds[j]);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我需要修改一些在我使用的程序中运行的脚本.
脚本仅在具有X和Y轴的图表上以特定价格绘制水平线.每当我切换到新图表时,脚本将遍历所有语句,直到它到达与图表匹配的符号/名称,然后它将加载行.
我正在使用永无止境的"if else声明"来为我做一些尽可能简单的事情.我有650 if else语句,每个语句包含数百个"addlines".
符号名称之间没有关系,除了字母表中的字母.符号包含的所有价格/数字都是随机的.
但我正在寻找一个更好的解决方案,使其运行速度更快,效率更高,而不是使用其他650个if语句.我知道我使用的命令不一样,我只是概括.我希望有人能帮帮忙.
将Else if语句乘以650,即有多少.
var Symbol
if (Symbol == "AAB") {
addline(37.5);
addline(40.9);
addline(15.5);
addline(100.5);
etc....
} else if (Symbol == "ZOB") {
addline(15.8);
addline(20.9);
addline(100.5);
addline(200.5);
etc....
} else if (Symbol == "STX") {
addline(10.9);
addline(19.8);
addline(5.5);
addline(20.2);
etc....
} else if (Symbol == "AXI") {
addline(200);
addline(20);
addline(5.9);
addline(9.9);
etc....
} else if (Symbol == "AXI") {
ETC.....
}
return;
}
Run Code Online (Sandbox Code Playgroud) javascript iteration if-statement control-structure switch-statement
我正在尝试编写一个简单的程序,将名称读取为C样式的字符串。然后垂直打印名称,每行一个字符。
当前,当程序提示用户输入其名称时,例如。亨利·詹姆斯(Henry James),仅垂直打印“亨利”(Henry)。在名称之间的中断处停止打印。
char myName[ 64 ] = "";
cout << "Enter your name: ";
cin.get( myName, 64 );
int i = 0;
while ( myName [ i ] != ' ' )
{
cout << myName[ i ] << endl;
i++;
}
getch();
return 0;
Run Code Online (Sandbox Code Playgroud)
我尝试将cin.ignore()放在cin.get()之前,但这最终破坏了程序。在while循环中我缺少什么?
这是我的if语句.我试图有两个不同的选择.一种是用户登录,另一种是当然不是.对于我的生活,我无法让这些工作.这是一个Word Press网站..这里的任何帮助都会很棒.这就是我所拥有的.
<div class="btn btn-success">
<?php if( ! is_user_logged_in()): ?>
<a href="<?php echo $submit_question_link ?>"<?php _e('Ask a question','dwqa') ?></a>
} else {
<?php add_modal_login_button( $login_text = 'Login to Ask a Question', $logout_text = 'Logout', $logout_url = '', $show_admin = false ); ?><?php endif; } ?>
</div>
Run Code Online (Sandbox Code Playgroud)
谢谢大家.没有你的代码有效,但你们,女孩们真的帮助我朝着正确的方向前进.无论如何,这对我有用.
"class ="btn btn-success">我有一个针对php文件的动作表单.表单完成并将数据插入数据库后,它希望它显示"Awesome".很棒,但是在表格之上.我希望它能够替换表格并显示出令人敬畏的效果.我怎么做?
谢谢.
if($done )
{
echo "Awesome";
}
else
{
echo "Error";
}
Run Code Online (Sandbox Code Playgroud) if-statement ×4
php ×3
c++ ×2
python ×2
.net ×1
c# ×1
coding-style ×1
conditional ×1
dynamic ×1
for-loop ×1
forms ×1
haskell ×1
html ×1
iteration ×1
javascript ×1
logic ×1
refactoring ×1
while-loop ×1
wordpress ×1