小编jfo*_*erg的帖子

将函数的返回值赋给变量

我很难理解为什么我不能将这个简单函数的返回值赋给变量gcd:

def euclidAlgorithm(m, n):
    if n == 0:
        print "n cannot be zero."
        return -1
    r = m % n # Remainder
    if r == 0:
        return n
    else:
        euclidAlgorithm(n, r)

if __name__ == "__main__":
    #Input values
    m = 54
    n = 36

    print "Input : m = ", m, " n = ", n
    gcd = euclidAlgorithm(m, n)
    if gcd == -1:
        print "Function terminated with an error"
    else:
        print "Output: gcd = ", gcd
Run Code Online (Sandbox Code Playgroud)

gcd当我运行它时,我得到的不是得到18: …

python

2
推荐指数
3
解决办法
2万
查看次数

覆盖Clojure记录的等于

我有一个记录,其中一个字段是类型byte[].由于没有为数组定义Clojure相等,我们有:

(defrecord Record [^bytes field])
(def rec1 (->Record (byte-array (map byte "abc"))))
(def rec2 (->Record (byte-array (map byte "abc"))))

(= rec1 rec2)
; => false
Run Code Online (Sandbox Code Playgroud)

当然,这是不可接受的.

现在,我们确实java.util.Arrays.equals为数组定义了正确的相等性.因为=对于其他Clojure对象非常有效,所以每次比较我的Record类型,类型包括该类型等时,我都不想使用interop.

是否可以覆盖记录的equals函数来处理数组?


我尝试过以下方法:

(defrecord Record [^bytes field])
  Object
    (equals [this other] (Arrays/equals this other)))
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误,"重复的方法名称和签名".

interop clojure

2
推荐指数
1
解决办法
458
查看次数

在robots.txt中只允许一个目录文件?

我想只允许一个目录文件/minsc,但我想禁止目录的其余部分.

现在robots.txt是这样的:

User-agent: *
Crawl-delay: 10
# Directories
Disallow: /minsc/
Run Code Online (Sandbox Code Playgroud)

我想要允许的文件是 /minsc/menu-leaf.png

我害怕造成伤害,所以我不知道我是否必须使用:

一个)

User-agent: *
Crawl-delay: 10
# Directories
Disallow: /minsc/
Allow: /minsc/menu-leaf.png
Run Code Online (Sandbox Code Playgroud)

要么

B)

User-agent: *
Crawl-delay: 10
# Directories
Disallow: /minsc/*    //added "*" -------------------------------
Allow: /minsc/menu-leaf.png
Run Code Online (Sandbox Code Playgroud)

谢谢,抱歉我的英语.

robots.txt

2
推荐指数
1
解决办法
2486
查看次数

从宏传递到函数时避免传递 void 表达式

我想编写一个调试宏,在出现错误时打印调用的函数的名称。问题是有些函数返回值,我想从宏返回任何值。

\n

这是我的尝试:

\n
#define check(expr) _check_expr(#expr, expr)\n\nextern bool check_for_error();\n\ntemplate <typename T> inline T _check_expr(const char *str, T value)\n{\n    if (check_for_error()) {\n        fprintf(stderr, "Failure: %s\\n", str);\n    }\n\n    return value;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我遇到的问题是,有时T = void编译器不会让我将类型表达式传递void给函数:

\n
../src/render.cc: In constructor \xe2\x80\x98render::impl::impl()\xe2\x80\x99:\n../src/render.cc:34:20: error: invalid use of void expression\n   34 |     check(glDisable(GL_DEPTH_TEST));\n
Run Code Online (Sandbox Code Playgroud)\n

我无法重新定义在宏下调用的函数checkcheck_for_error函数,这些函数是我的程序外部的。此外,在计算表达式之后需要检查错误。

\n

C++中有没有好的方法来解决这个问题?

\n

类似于:“如果该表达式的 decltype 为 void,则生成此代码,否则生成该代码”。

\n

c++ metaprogramming

2
推荐指数
1
解决办法
179
查看次数

从javascript访问实例变量

在我的Rails应用程序中,我需要脚本以不同的方式运行,具体取决于它们所服务的控制器和操作.所以在我的ApplicationController中,我将这些提供为:

before_filter :save_action_controller  

def save_action_controller
  @action = action_name
  @controller = controller_name
end
Run Code Online (Sandbox Code Playgroud)

在一个erb过滤的javascript文件中我有这个:

window.controller = <%= @controller || 'undefined' %>;
window.action = <%= @action || 'undefined' %>;
Run Code Online (Sandbox Code Playgroud)

但似乎@controller和@action在这种情况下都是零?但是,我可以从视图和帮助程序中访问它们.另外,如果我真的试图访问"不存在的"变量,我不会看到如何在不引发异常的情况下实现这一目标?

从javascript访问此内容需要做什么?有首选方法吗?

javascript ruby-on-rails ruby-on-rails-3

0
推荐指数
1
解决办法
1680
查看次数