我正在编写与ANSI兼容的C代码,因此我无法使用line(//)注释.我正在使用Xcode.在Sublime Text和Eclipse中,我认为大多数其他IDE,都有单独的键盘快捷键用于行注释和块注释(/**/).但是,我没有在Xcode中看到 - 实际上,我甚至没有看到添加块注释的菜单选项.是不是Xcode中不支持?如果是这样,那肯定是一个蹩脚的决定.
我正在尝试使用量角器测试元素是否可见.这是元素的样子:
<i class="icon-spinner icon-spin ng-hide" ng-show="saving"></i>
Run Code Online (Sandbox Code Playgroud)
在chrome控制台中,我可以使用这个jQuery选择器来测试元素是否可见:
$('[ng-show=saving].icon-spin')
[
<i class=?"icon-spinner icon-spin ng-hide" ng-show=?"saving">?</i>?
]
> $('[ng-show=saving].icon-spin:visible')
[]
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在量角器中执行相同操作时,我在运行时遇到此错误:
InvalidElementStateError:
invalid element state: Failed to execute 'querySelectorAll' on 'Document':
'[ng-show=saving].icon-spin:visible' is not a valid selector.
Run Code Online (Sandbox Code Playgroud)
为什么这无效?如何使用量角器检查可见性?
我假设计算数字的模数是一个稍微昂贵的操作,至少与简单的算术测试(例如,查看数字是否超过数组的长度)相比.如果确实如此,替换更有效,例如,以下代码:
res = array[(i + 1) % len];
Run Code Online (Sandbox Code Playgroud)
以下是什么?:
res = array[(i + 1 == len) ? 0 : i + 1];
Run Code Online (Sandbox Code Playgroud)
第一个更容易在眼睛上,但我想知道第二个可能更有效.如果是这样,当使用编译语言时,我是否可以期望优化编译器将第一个代码段替换为第二个代码段?
当然,这种"优化"(如果它确实是一种优化)在所有情况下都不起作用(在这种情况下,它只有在i+1永远不会超过的情况下才有效len).
在烧瓶中,我可以这样做:
render_template("foo.html", messages={'main':'hello'})
Run Code Online (Sandbox Code Playgroud)
如果foo.html包含{{ messages['main'] }},页面将显示hello.但是,如果有一条通往foo的路线怎么办:
@app.route("/foo")
def do_foo():
# do some logic here
return render_template("foo.html")
Run Code Online (Sandbox Code Playgroud)
在这种情况下,获取foo.html的唯一方法是,如果我希望无论如何都要发生这种逻辑,那就是通过redirect:
@app.route("/baz")
def do_baz():
if some_condition:
return render_template("baz.html")
else:
return redirect("/foo", messages={"main":"Condition failed on page baz"})
# above produces TypeError: redirect() got an unexpected keyword argument 'messages'
Run Code Online (Sandbox Code Playgroud)
那么,我怎样才能将该messages变量传递给foo路由,这样我就不必在加载之前重写该路由计算的相同逻辑代码?
所以我正在构建一个从用户输入中获取内容的程序.我有一个看起来非常简单的try/catch块,如果用户没有输入int,则应该重复该块直到它们为止.这是代码的相关部分:
import java.util.InputMismatchException;
import java.util.Scanner;
public class Except {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
boolean bError = true;
int n1 = 0, n2 = 0, nQuotient = 0;
do {
try {
System.out.println("Enter first num: ");
n1 = input.nextInt();
System.out.println("Enter second num: ");
n2 = input.nextInt();
nQuotient = n1/n2;
bError = false;
}
catch (Exception e) {
System.out.println("Error!");
}
} while (bError);
System.out.printf("%d/%d = %d",n1,n2, nQuotient);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我为第二个整数输入0,那么try/catch就会完全按照预期进行操作并让我再次输入它.但是,如果我有一个InputMismatchException,比如为其中一个数字输入5.5,它只是在无限循环中显示我的错误信息.为什么会发生这种情况,我该怎么办呢?(顺便说一句,我已经尝试显式输入InputMismatchException作为catch的参数,但它没有解决问题.
Idris在矢量引擎下做了什么样的优化吗?因为从它的外观来看,Idris向量只是一个已知大小的链表(在编译时已知).事实上,一般来说,你似乎可以表达以下等价(我在语法上有点猜测):
Vector : Nat -> Type -> Type
Vector n t = (l: List t ** length l = n)
Run Code Online (Sandbox Code Playgroud)
因此,虽然这在防止范围误差方面很好,但是矢量的真正优势(在该术语的传统用法中)是在性能方面; 特别是O(1)随机访问.似乎idris向量不支持这个(你如何编写索引函数来获得这种性能?).
Nat在重新配置Vectors 之下没有任何巫术(如果发生的那样),Idris中是否存在随机访问数据类型?哈斯克尔支持一些基本的操作,通过列表递归,比如head,tail,init和last.我在内部想知道Haskell如何表示其列表数据?如果它是单链表,那么随着列表的增长init,last操作可能会变得昂贵.如果它是一个双向链表,那么所有四个操作都可以O(1)很容易地完成,尽管会以一些内存为代价.无论哪种方式,对我来说都很重要,所以我可以编写适当的代码.(尽管,函数式编程的精神似乎是"问它是做什么,而不是它是怎么做的").
我已经使用Flask一段时间了,发现我更喜欢Rails在某些方面,特别是对于轻量级.但是,在我看来,Rails的一个领域是错误报告.Flask中有很多次我在浏览器中出现错误,但我的控制台根本没有显示任何错误(例如,尝试从请求中提取不存在的查询字符串参数.形成400错误请求,但所有你看到的在控制台上是传入请求).
Flask上是否有任何一种冗长的模式可以提供有关其所有行为的详细信息?
我正在研究C的解析器.我正在尝试找到C的所有无上下文派生的列表.理想情况下,它将在BNF或类似的情况下.我确信这样的事情就在那里,但谷歌搜索并没有给我太多.
阅读现有解析器/编译器的源代码已被证明比有用的更令人困惑,因为我发现的大多数都比我正在构建的更加雄心勃勃和复杂.
简介:通过git别名运行的命令的当前工作目录是错误的.
证明这一点的最简单方法是使用这样的git别名:
[alias]
pwd = !pwd
Run Code Online (Sandbox Code Playgroud)
所以git pwd只是运行bash命令pwd.人们会认为这两个命令的输出是相同的.现在,让我们试试几次:
$ cd ~
$ pwd && git pwd
/home/limpchimp
/home/limpchimp # great!
$ mkdir foo && cd foo && git init
Initialized empty Git repository in /home/limpchimp/foo/.git/
$ pwd && git pwd
/home/limpchimp/foo
/home/limpchimp/foo # great!
$ mkdir bar && cd bar
$ pwd && git pwd
/home/limpchimp/foo/bar
/home/limpchimp/foo # uuhhhhhhhh...?
Run Code Online (Sandbox Code Playgroud)
似乎git正在将当前工作目录更改为具有.git文件夹(如果存在)的第一个父目录.这是非常有问题的; 它搞砸了我编写的某些脚本,这些脚本意味着在特定的目录中运行,并且使我无法将某些东西用作git别名.有没有解决的办法?我该如何解决?