将输出以下PHP代码3.
function main() {
if (1) {
$i = 3;
}
echo $i;
}
main();
Run Code Online (Sandbox Code Playgroud)
但是下面的C代码会引发编译错误.
void main() {
if (1) {
int i = 3;
}
printf("%d", i);
}
Run Code Online (Sandbox Code Playgroud)
那么PHP中的变量不是严格的块范围的?在PHP中,内部块中定义的变量可以用在外部块中吗?
我正在尝试编写一个在Clojure中返回memoized递归函数的函数,但是我在使递归函数看到它自己的memoized绑定时遇到了麻烦.这是因为没有创建var吗?另外,为什么我不能在用let创建的本地绑定上使用memoize?
这个稍微不同寻常的Fibonacci序列制作者从一个特定的数字开始就是我希望我能做的一个例子:
(defn make-fibo [y]
(memoize (fn fib [x] (if (< x 2)
y
(+ (fib (- x 1))
(fib (- x 2)))))))
(let [f (make-fibo 1)]
(f 35)) ;; SLOW, not actually memoized
Run Code Online (Sandbox Code Playgroud)
使用with-local-vars似乎是正确的方法,但它对我也不起作用.我想我不能关闭vars?
(defn make-fibo [y]
(with-local-vars [fib (fn [x] (if (< x 2)
y
(+ (@fib (- x 1))
(@fib (- x 2)))))]
(memoize fib)))
(let [f (make-fibo 1)]
(f 35)) ;; Var null/null is unbound!?!
Run Code Online (Sandbox Code Playgroud)
我当然可以手动编写一个宏来创建一个封闭的原子并自己管理memoization,但我希望没有这样的hackery这样做.
当我在node.js中键入它时,我得到了undefined.
var testContext = 15;
function testFunction() {
console.log(this.testContext);
}
testFunction();
=>undefined
Run Code Online (Sandbox Code Playgroud)
没有var关键字,它传递(=> 15).它在Chrome控制台中运行(有和没有var关键字).
[编辑:]早些时候我问过这个问题可能是一个关于何时使用OOP与何时使用程序编程的错误框架问题 - 一些回复暗示我要求帮助理解OOP.相反,我经常使用OOP但想知道何时使用程序方法.从回答来看,我认为有一个相当强烈的共识,即OOP通常是一种更好的全方位方法,但如果OOP架构不能长期提供任何重用利益,则应该使用过程语言.
但是我作为Java程序员的经历却不然.我看到了一个庞大的Java程序,我用Perl大师重写了我编写的代码的1/10,看起来和我的OOP完美模型一样强大.我的架构看到了大量的重用,但更简洁的程序方法产生了一个卓越的解决方案.
所以,冒着重复自己的风险,我想知道在什么情况下我应该选择一个过程而不是面向对象的方法.您如何预先确定OOP架构可能过度杀伤并且程序方法更简洁高效的情况.
任何人都可以建议这些场景的样子吗?
什么是提前确定程序编程方法更好服务的项目的好方法?
在我看来,定义总是意味着存储分配.
在以下代码中,int i在程序堆栈上分配一个4字节(通常)存储并将其绑定到i,i = 3并将3分配给该存储.但是因为goto,定义被绕过,这意味着没有分配存储空间i.
我听说局部变量在函数的入口处(f()在这种情况下)分配在它们所在的位置,或者在定义点处.
但无论哪种方式,如何i在尚未定义的情况下使用它(根本没有存储空间)?执行时分配给值3的位置在哪里i = 3?
void f()
{
goto label;
int i;
label:
i = 3;
cout << i << endl; //prints 3 successfully
}
Run Code Online (Sandbox Code Playgroud) <bean id="myBean" class="my.package.MyBeanClass" scope="prototype" />
Run Code Online (Sandbox Code Playgroud)
我正在使用Spring 2.5.6.
哪种声明全局javascript变量的正确方法?我正在尝试它的方式不起作用
$(document).ready(function() {
var intro;
if ($('.intro_check').is(':checked')) {
intro = true;
$('.intro').wrap('<div class="disabled"></div>');
};
$('.intro_check').change(function(){
if(this.checked) {
intro = false;
$('.enabled').removeClass('enabled').addClass('disabled');
} else {
intro = true;
if($('.intro').exists()) {
$('.disabled').removeClass('disabled').addClass('enabled');
} else {
$('.intro').wrap('<div class="disabled"></div>');
}
}
});
});
console.log(intro);
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用exec运行一段python代码.
my_code = """
class A(object):
pass
print 'locals: %s' % locals()
print 'A: %s' % A
class B(object):
a_ref = A
"""
global_env = {}
local_env = {}
my_code_AST = compile(my_code, "My Code", "exec")
exec(my_code_AST, global_env, local_env)
print local_env
Run Code Online (Sandbox Code Playgroud)
这导致以下输出
locals: {'A': <class 'A'>}
A: <class 'A'>
Traceback (most recent call last):
File "python_test.py", line 16, in <module>
exec(my_code_AST, global_env, local_env)
File "My Code", line 8, in <module>
File "My Code", line 9, in B
NameError: name 'A' is …Run Code Online (Sandbox Code Playgroud) 我知道可以在Python中跨模块共享全局变量.但是,我想知道这可能的程度和原因.例如,
global_mod.py
x = None
Run Code Online (Sandbox Code Playgroud)
mid_access_mod.py
from global_mod import *
class delta:
def __init__(self):
print x
Run Code Online (Sandbox Code Playgroud)
bot_modif_mod.py
import mid_access_mod
import global_mod
class mew:
def __init__(self):
global_mod.x = 5
def main():
m = mew()
d = mid_access_mod.delta()
Run Code Online (Sandbox Code Playgroud)
即使所有模块共享全局变量x,也会打印None.为什么会这样?似乎x在mid_access_mod.py中被评估,然后由mew()在bot_modif_mod.py中分配.
如何在try/except块public中创建变量?
import urllib.request
try:
url = "http://www.google.com"
page = urllib.request.urlopen(url)
text = page.read().decode('utf8')
except (ValueError, RuntimeError, TypeError, NameError):
print("Unable to process your request dude!!")
print(text)
Run Code Online (Sandbox Code Playgroud)
此代码返回错误__CODE__.
如何在try/except块之外使变量文本可用?
scope ×10
python ×3
javascript ×2
annotations ×1
c ×1
c++ ×1
clojure ×1
closures ×1
java ×1
javabeans ×1
jquery ×1
memoization ×1
module ×1
node.js ×1
object ×1
oop ×1
php ×1
python-3.x ×1
recursion ×1
spring ×1
try-except ×1